【问题标题】:How to copy multiple projects into a single Docker container如何将多个项目复制到单个 Docker 容器中
【发布时间】:2018-03-05 09:28:01
【问题描述】:

我决定使用 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 如何构建和运行镜像和容器的了解充其量只是肤浅的。

【问题讨论】:

    标签: c# visual-studio docker


    【解决方案1】:

    我不确定......在我的解决方案中有 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

    【讨论】:

      【解决方案2】:

      每个容器一个项目,

      但如果您的 container 是像 IISApache 和其他的 WebServer,您可以 将项目文件夹复制到 Dockerized WebServer 中。

      在这种情况下,您有一个包含多个应用程序的容器。

      例如,您有 3 个或更多用于 IIS 服务器或其他平台的项目,如下图所示:

      显然项目必须具有相同的平台。

      当您构建和执行项目时,项目会被移动到同一个容器中,并且仅由 WebServer 执行。

      在 Docker 上下文中,您没有经典的 PATH,因为您在不同的环境中工作。

      从简单的项目开始您的测试,记住 KISS KEEP IT SIMPLE SIMPLE :-)

      【讨论】:

        猜你喜欢
        • 2017-09-09
        • 2010-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-24
        相关资源
        最近更新 更多