如何发布VS2019构建的带Docker支持的.NET5 API镜像与容器,无需启动VS访问
解决方案
核心原因
你当前运行的mareldockerfoodchain:dev是Visual Studio自动生成的调试专用镜像,并非正式发布版本:
- VS为了提升调试效率,生成dev镜像时会跳过Dockerfile中的build、publish阶段,容器启动后默认运行远程调试工具,等待VS调试器挂载后才会启动你的API应用,因此关闭VS后应用进程根本没有运行,自然无法访问。
- 你的Dockerfile存在拼写错误:
ENV APSNETCORE_URLS少了一个N,正确应为ASPNETCORE_URLS,该错误会导致应用端口监听配置不生效。
操作步骤
- 清理现有调试容器和镜像,避免干扰
依次执行以下命令:
# 停止当前运行的调试容器 docker stop Marel.Docker.Foodchain # 删除该调试容器 docker rm Marel.Docker.Foodchain # 删除调试专用的dev镜像 docker rmi mareldockerfoodchain:dev
- 修正Dockerfile的配置错误
把Dockerfile base阶段的ENV APSNETCORE_URLS=https://*:900修改为:
ENV ASPNETCORE_URLS=https://*:900
- 手动构建正式发布镜像
打开命令行工具,切换到Dockerfile所在的解决方案根目录,执行构建命令:
docker build -t mareldockerfoodchain:latest .
该命令会完整执行Dockerfile的所有构建阶段,生成不含调试依赖的正式发布镜像。
- 用正式镜像启动容器
执行以下命令启动容器,可自行修改宿主机端口(示例中为9000)避免端口冲突:
docker run -d -p 9000:900 --name foodchain-api mareldockerfoodchain:latest
- 验证访问
直接访问https://localhost:9000(对应你配置的接口路径)即可正常访问,无需启动Visual Studio。
内容的提问来源于stack exchange,提问作者CorrieJanse
相关产品推荐
相关产品推荐

