Asp.Net Core 使用 docker-compose.yml 开发与调试应用
参考
环境
| 软件/系统 | 版本 | 说明 |
|---|---|---|
| Windows | windows 10 专业版 22H2 64 位操作系统, 基于 x64 的处理器 | |
| Microsoft Visual Studio | Community 2022 (64 位) - Current 版本 17.14.17 | |
| .NET | 8 | |
| Docker Desktop | 4.48.0 | |
| Docker | Docker version 28.5.1, build e180ab8 | |
| Docker Compose | Docker Compose version v2.40.0-desktop.1 |
注意事项
- 创建项目时不建议勾选
将解决方案和项目都放在同一目录 - 在解决方案下如果手动添加了新的 WEB 项目,VS调试时在
Docker会随机映射一个本机端口到容器的8080,可以在docker-compose.yml内给对应容器指定端口映射进行绑定端口 - 使用 VS 添加
docker-compose相关配置后,在docker-compose.yml同级目录还存在docker-compose.override.yml文件,docker-compose.override.yml会覆盖docker-compose.yml内的内容。(使用docker-compose.override.yml后,可以让不同环境共用docker-compose.yml,差异配置配置到docker-compose.override.yml内) docker-compose.override.yml给应用设置ASPNETCORE_ENVIRONMENT=Development和ASPNETCORE_HTTP_PORTS=8080,如果手动编辑/新增了应用容器,记得在docker-compose.override.yml也给对应容器添加上相关环境变量- 使用 VS 调试时,VS 会自动创建
解决方案\obj\Docker\docker-compose.vs.debug.g.yml文件,该文件会覆盖docker-compose.yml的配置,其中会添加一些配置如挂载目录到容器等相关操作,简化调试配置的内容。
正文
-
创建项目(当前创建的解决方案为 XqcTest 、项目为 XqcTest)
- 不勾选
将解决方案和项目都放在同一目录 - 不勾选
配置HTTPS - 不勾选
启用容器支持 - 不勾选
不适用顶级语句
- 不勾选
-
在
解决方案资源管理器->解决方案->xx项目->右键->添加->Docker支持,添加完成后,会在项目目录下新增Dockerfile文件,内容如下:(内容为自动生成,仅供参考;虽然当前Dockerfile存在多阶段构建,VS 会自动选择对应的构建阶段)# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。 # 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时 FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base USER $APP_UID WORKDIR /app EXPOSE 8080 # 此阶段用于生成服务项目 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["XqcTest/XqcTest.csproj", "XqcTest/"] RUN dotnet restore "./XqcTest/XqcTest.csproj" COPY . . WORKDIR "/src/XqcTest" RUN dotnet build "./XqcTest.csproj" -c $BUILD_CONFIGURATION -o /app/build # 此阶段用于发布要复制到最终阶段的服务项目 FROM build AS publish ARG BUILD_CONFIGURATION=Release RUN dotnet publish "./XqcTest.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false # 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值) FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "XqcTest.dll"] -
在
解决方案资源管理器->解决方案->xx项目->右键->添加->容器业务流程协调支持程序支持,进行添加Docker Compose相关配置。(截图内容的参数均为默认值,未手动调整)


-
添加完成后会在
解决方案资源管理器->解决方案内新增docker-compose文件夹;docker-compose文件的真实系统路径在解决方案资源管理器/


-
在
docker-compose.yml内配置了基础信息,在docker-compose.override.yml配置了端口与环境变量的相关内容。- docker-compose.yml
services: xqctest: image: ${DOCKER_REGISTRY-}xqctest build: context: . dockerfile: XqcTest/Dockerfile - docker-compose.override.yml
services: xqctest: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_HTTP_PORTS=8080 ports: - "8080"
- docker-compose.yml
其他
-
在项目启动设置内,切换为
docker-compose后,点击启动即可进行开发调试。

-
代码更新后,点击
🔥按钮可以实时生效修改的内容。

-
如果需要添加其他容器,在
docker-compose.yml内编辑、添加即可。
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/19159783
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/19159783
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。

浙公网安备 33010602011771号