asp.net 核心 docker-compose 刷新代码更改

Ale*_*ley 7 docker docker-compose asp.net-core

我在这里读到,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"]
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: '3.4'

services:
  dockercompose:
    image: ${DOCKER_REGISTRY}dockercompose
    build:
      context: .
      dockerfile: dockercompose/Dockerfile
    ports:
     - "9000:80"
    volumes:
     - .:/src/dockercompose  
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

eri*_*zic 9

你应该使用dotnet watch run它。但是,这意味着您需要使用 SDK 映像 (microsoft/dotnet:2.1-sdk) 而不是仅运行时映像 (microsoft/dotnet:2.1-aspnetcore-runtime)。

我只使用了两个 Docker 文件,并在 docker-compose.yml 中定义了两个服务。一个使用 dockerfile 和运行时映像(用于部署),另一个使用 SDK 映像(用于开发)。

开发 dockerfile 可能如下所示:

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
Run Code Online (Sandbox Code Playgroud)

您可能需要根据您的项目以及如何在 docker-compose.yml 中映射路径来更改路径,但这或多或少是这样。