.net - 无法从 Mac 上的主机连接到 docker 容器
问题描述
我希望我的 ASP.NET Core Web 应用程序托管在 docker 容器中,监听端口 80。到目前为止,我的项目有以下 Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet publish PROJECT_NAME -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
EXPOSE 80
ENTRYPOINT ["dotnet", "PROJECT_NAME.dll"]
我建立我的形象:
docker build -t IMAGE_TAG -f PROJECT_NAME/Dockerfile .
然后我运行我的容器:
docker run IMAGE_TAG -p 80:80
控制台日志显示它正在运行:
[18:54:34 INF] Starting web host.
[18:54:34 INF] Now listening on: http://[::]:80
[18:54:34 INF] Application started. Press Ctrl+C to shut down.
[18:54:34 INF] Hosting environment: Production
[18:54:34 INF] Content root path: /app
我的 Web 应用程序有一个 /api/health 的健康检查端点,它只返回“健康”以显示一切正常。
但是,当我进入浏览器并输入以下任何内容时,什么也没有发生:
- http://localhost/api/health
- http://127.0.0.1/api/health
- http://0.0.0.0/api/health
- http://192.168.99.100/api/health
- http://docker.for.mac.localhost/api/health
- http://host.docker.internal/api/health
这是我第一次搞乱 docker,所以我很可能错过了一些明显的东西。你有什么想法吗?
解决方案
推荐阅读
- amazon-web-services - 如何使用气流将数据从 redshift 导出到 s3?
- nginx - 如何在磁盘上查找与正则表达式匹配的文件?(例如 /123-foo 提供 /123-bar.html)
- android - 尝试在模拟器上安装第二个颤振应用程序时出错
- c++ - understand the pointer pointer in c++ to get the function call
- html - 如何在 GitHub README.md 中显示 Codecov.io 徽章?
- ios - 在导航栏下隐藏 UITableView
- javascript - 如何在数组中记录所有异步函数的结果
- javascript - 如何在标签 Highcharts 中设置“Y”位置
- entity-framework - Linq 选择特定列具有价值的位置
- python - SymPy `solve` 无法求解矩阵方程 A*x = b 当符号被替换为具有 `subs` 的值时