Обновление docker-compose ядра ядра asp.net при изменении кода - PullRequest
0 голосов
/ 01 декабря 2018

Я прочитал здесь , что я могу получить возможность не запускать docker-compose build каждый раз, когда изменяется код, добавляя разделы томов в docker-compose.yml.Но я не могу реализовать эту функцию в своем приложении ASP.NET Core.Dockerfile:

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

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["dockercompose/dockercompose.csproj", "dockercompose/"]
RUN dotnet restore "dockercompose/dockercompose.csproj"
COPY . .
WORKDIR "/src/dockercompose"
RUN dotnet build "dockercompose.csproj" -c Release -o /app

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

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

docker-compose.yml:

version: '3.4'

services:
  dockercompose:
    image: ${DOCKER_REGISTRY}dockercompose
    build:
      context: .
      dockerfile: dockercompose/Dockerfile
    ports:
     - "9000:80"
    volumes:
     - .:/src/dockercompose  

Чего мне не хватает?

1 Ответ

0 голосов
/ 01 декабря 2018

Вы должны использовать dotnet watch run для этого.Однако это означает, что вам нужно использовать образ SDK (microsoft / dotnet: 2.1-sdk), а не только образ времени выполнения (microsoft / dotnet: 2.1-aspnetcore-runtime).

Я просто использую два файла Docker и имеюдве службы, определенные в docker-compose.yml.Один использует dockerfile с образом среды выполнения (для развертывания), другой - с образом SDK (для разработки).

Файл Docker разработки может выглядеть примерно так:

FROM microsoft/dotnet:2.1-sdk AS build-env
# Use native linux file polling for better performance
ENV DOTNET_USE_POLLING_FILE_WATCHER 1
WORKDIR /app
ENTRYPOINT dotnet watch run --urls=http://+:5000

Youвозможно, придется изменить путь в соответствии с вашим проектом и тем, как вы отображаете его в вашем docker-compose.yml, но это более или менее.

...