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)
我错过了什么?
你应该使用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 中映射路径来更改路径,但这或多或少是这样。
| 归档时间: |
|
| 查看次数: |
3598 次 |
| 最近记录: |