У меня проблемы с созданием докеризированного приложения, и мне нужна помощь.
Приложение состоит из нескольких .Net-решений, которые создаются и запускаются как док-контейнер отдельно.У меня была рабочая версия со следующей структурой:
Это сработало довольно хорошо, с (упрощенными) докер-файлами, такими как:
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