c# - 如何将多个项目复制到单个 Docker 容器中

标签 c# visual-studio docker

我决定使用 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/

相关文章:

c# - 将 Collection<T> 转换为接口(interface) - 为什么它不起作用?

c# - 在 Java 中调用泛型方法时如何显式提供类型参数?

c# - 如何在asp.net core中有效地统计HTTP调用?

visual-studio - CMake:如何在 Visual Studio 项目中的 "Header files"中显示标题?

c++ - 使用 VS2015 打开 VS2010 C++ 项目时缺少属性

ruby - Chef 容器+ Chef 库

php - Docker compose volume 在多阶段构建中覆盖 COPY

c# - 绑定(bind) ListView 并根据值格式化数据

c++ - GCC 等同于/INCLUDE Visual Studio 选项

macos - 在Mac上使用Docker构建Hyperledger Fabric