Docker контейнер из одного .Net решения с двумя разными проектами - проблемы контекста - PullRequest
0 голосов
/ 31 января 2019

У меня проблемы с созданием докеризированного приложения, и мне нужна помощь.

Приложение состоит из нескольких .Net-решений, которые создаются и запускаются как док-контейнер отдельно.У меня была рабочая версия со следующей структурой:

  • MainProjectFolder
    • Project1
      • .sln
      • Подпапка1
        • .csproj
        • .dockerfile
    • Project2
      • .sln
      • Подпапка2
        • .csproj
        • .dockerfile
    • Docker
      • docker-compose.yml

Это сработало довольно хорошо, с (упрощенными) докер-файлами, такими как:

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  

Inна самом деле есть еще .Net-контейнеры и некоторые вещи из интерфейса / базы данных.

Теперь я попытался упаковать все общие определения, модели, ... в дополнительный проект (библиотека классов .net) и сослаться на него.в каждом отдельном решении, чтобы минимизировать несколько кодов.

Проблема в том, что я не могу собрать проект, потому что общий проект .net не находится в контексте проекта 1/2 при использовании somethi.Например:

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

Я пытался изменить контекст в docker-compose на ../ и изменить пути, но получаю некоторые ошибки разрешения на чтение.

Есть ли какой-то общий подходкак бороться с такой проблемой, которую я мог пропустить?

Редактировать: Мы решили использовать подмодули Git, чтобы теперь включить второй проект в контекст сборки других проектов.

Greetings Sven

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...