我决定使用 Docker 来部署我们的项目,但是我们很难配置 docker 支持。 该解决方案本身包含多个项目(准确地说是 14 个),其中一个项目构建 .exe 文件。我为这个项目添加了 docker 支持,因此它包含 Dockerfile 和 Dockerignore。该解决方案是 Web 应用程序的后端,因此代码中没有 GUI。
问题是,当我构建和运行 Docker 容器时,它失败了,因为代码中有一个指向另一个项目的路径引用,docker 没有将其复制到容器中。
var webAppStartup = new WebAppStartup(new
AutofacDependencyContainerFactory().Create(AddDependencies),
new HostingEnvironment
{
EnvironmentName = EnvironmentName.Development
},
Path.GetFullPath(@"../MyOtherProject/"));
我尝试通过将文件在目录树中向上移动一级来使用 Dockerfile 复制这两个项目,但是如果我尝试复制不在 dockerfile 的直接上下文中的内容,Docker 会抛出错误,指出我只能在构建上下文中复制文件。
FROM microsoft/dotnet-framework:4.7.1-windowsservercore-ltsc2016
ARG source
WORKDIR /app
COPY ${source:-MyProject/obj/Docker/publish} .
COPY ${source:-MyOtherProject/obj/Docker/publish} .
ENTRYPOINT ["C:\\app\\MyProject.exe"]
如何将多个项目(或整个解决方案?)复制到一个 docker 容器中,或者是否有解决此类问题的方法?我对 Docker 完全陌生,我对 Docker 如何构建和运行图像和容器的了解充其量只是肤浅的。
最佳答案
我不确定...在我的解决方案中有 2 个项目,但请尝试这样的事情。
FROM microsoft/aspnetcore-build:2.0-stretch AS publish
先新建
WORKDIR /src/
COPY ./ .
设置工作目录和副本
RUN dotnet publish --output /src/out
在解决方案中发布所有项目已经添加引用并创建新的docker
FROM microsoft/aspnetcore-build:2.0-stretch
并从之前的发布复制到新的 docker
COPY --from=publish /src/out .
完整代码如下 https://github.com/uopeydel/readme.txt/blob/master/Readme.Web/Readme.Web/Dockerfile
关于c# - 如何将多个项目复制到单个 Docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49107100/