@olegkrlvs

Как правильно создать Docker file в проекте .net core + react?

Подскажите как правильно создать docker файл для двух проектов, .net core + react? По отдельности для каждого проекта отдельный файл и потом обьединить через docker-compose или один общий файл?

Структура проекта:
TestApp:
- TestApp
- TestApp.Core
- TestApp.Database
- ClientApp

И ниже текущей Docker файл общий, но он не работает правильно:

ARG REPO=mcr.microsoft.com/dotnet/core
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
ENV BuildingDocker true
WORKDIR /src
COPY ["TestApp/TestApp.csproj", "TestApp/"]
COPY ["TestApp.Core/TestApp.Core.csproj", "TestApp.Core/"]
COPY ["TestApp.Database/TestApp.Database.csproj", "TestApp.Database/"]
RUN dotnet restore "TestApp/TestApp.csproj"
COPY . .
WORKDIR "/src/TestApp"
RUN dotnet build "TestApp.csproj" -c Release -o /app/build

FROM node:12-alpine as build-node
WORKDIR ClientApp
COPY ClientApp/package.json .
COPY ClientApp/package-lock.json .
RUN npm install
COPY ClientApp/ .
RUN npm run-script build

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
COPY --from=build-node /ClientApp/build ./ClientApp/build
CMD ASPNETCORE_URLS=http://*:$PORT dotnet TestApp.dll


Спасибо!
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka Куратор тега .NET
Токсичный шарпист
Вообще, статику обычно в контейнер не включают - её можно сразу раздавать с nginx.
Пример Dockerfile для бэка есть в документации.
Ответ написан
Комментировать
@Ne4to
статику нужно скопировать в wwwroot
COPY --from=build-node /ClientApp/build /app/wwwroot

и добавить поддержку статичных файлов
public void Configure(IApplicationBuilder app)
{
    app.UseDefaultFiles();
    app.UseStaticFiles();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы