我决定使用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如何构建和运行图像和容器的了解至多是肤浅的。
答案 0 :(得分:1)
我不确定...在我的解决方案中有2个项目但是尝试这样的事情。
FROM microsoft/aspnetcore-build:2.0-stretch AS publish
首先创建新的
WORKDIR /src/
COPY ./ .
设置工作目录和coppy
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
答案 1 :(得分:0)