来自一个具有两个不同项目的.Net解决方案的Docker容器-上下文问题

时间:2019-01-31 13:36:58

标签: .net docker .net-core docker-compose

我在构建dockerized应用程序时遇到问题,需要一些帮助。

该应用程序由多个.Net解决方案组成,它们分别作为docker容器构建和启动。我有一个具有以下结构的工作版本:

  • MainProjectFolder
    • Project1
      • .sln
      • 子文件夹1
        • .csproj
        • .dockerfile
    • Project2
      • .sln
      • 子文件夹2
        • .csproj
        • .dockerfile
    • Docker
      • docker-compose.yml

使用(简化的)dockerfile,如:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY Project1/Subfolder1/project1.csproj project1/
COPY . .
WORKDIR /src/project1
RUN dotnet build project1.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish distributor.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "project1.dll"]

和一个(简化的)docker-compose,如:

version: "3.5"

services:

    project1:
     container_name: main_project1
     build: 
       context: ../project1
       dockerfile: ./project1/Dockerfile
     command:
       - "dotnet run"
     working_dir: /app   

    project2:
     container_name: main_project2
     build: 
       context: ../project2
       dockerfile: ./project2/Dockerfile
     command:
       - "dotnet run"
     working_dir: /app  

实际上,还有更多的.Net容器和一些前端/数据库内容。

现在,我尝试将所有常见的定义,模型,...打包在一个额外的项目(.net类库)中,并在每个解决方案中对其进行引用,以最小化多个代码。

问题是,当使用类似这样的命令时,因为通用的.net项目不在project1 / 2的上下文中,所以我无法构建该项目。

COPY project1/project1/project1.csproj project1/
COPY ../common/common.csproj common/

我试图将docker-compose中的上下文更改为../并修改路径,但遇到一些读取权限错误。

是否有一些通用的方法来处理我可能错过的此类问题?

编辑:我们决定使用Git子模块现在将第二个项目带入其他项目的构建上下文中。

问候 斯文

0 个答案:

没有答案