gpt4 book ai didi

docker - Docker Container中的“dotnet run”导致无法访问的URL

转载 作者:行者123 更新时间:2023-12-02 20:11:41 24 4
gpt4 key购买 nike

我正在尝试使用ASP.Net Core和Docker设置开发环境。镜像正确生成,并且容器运行没有问题。但是,即使我已将主机和容器的端口都指定为5000,dotnet仍会以既不包含指定端口又无法访问的URL启动服务器。我期望监听器位于:http://localhost:5000docker-compose up结果为:

Recreating netcore_ms1_1 ...
Recreating netcore_ms1_1 ... done
Attaching to netcore_ms1_1
ms1_1 | Hosting environment: Production
ms1_1 | Content root path: /app
ms1_1 | Now listening on: http://[::]:80
ms1_1 | Application started. Press Ctrl+C to shut down.

我的应用程序只是一个 dotnet new web应用程序模板示例。这是我的Dockerfile和docker-compose.yml文件:

Dockerfile
FROM microsoft/aspnetcore-build:2.0.0-jessie
WORKDIR /app
EXPOSE 5000
ENTRYPOINT ["dotnet", "run", "--server.urls", "http://0.0.0.0:5000"]

docker-compose.yml
version: '3'
services:

ms1:
build: ./ms1
ports:
- "5000:5000"
volumes:
- ./ms1:/app:Z

有人可以向我指出我所缺少的吗?

附加问题

我将如何继续在Docker容器中运行Dotnet Watcher工具,更具体地说,是运行 dotnet watch run并监视已安装卷./ms1中的文件更改?

在此先感谢您的帮助。

最佳答案

使用microsoft/aspnetcore-buildmicrosoft/aspnetcore时,该镜像已预先配置为公开端口80。像这样启动容器:

FROM microsoft/aspnetcore-build:2.0.0-jessie
WORKDIR /app
ENTRYPOINT ["dotnet", "run"]

在命令行上
docker run -p 5000:80

或者在docker-compose.yml中,
ports: 
- "5000:80"

此默认值来自 microsoft/aspnetcore图像的定义,该定义将 ASPNETCORE_URL环境变量设置为 http://+:80
ENV ASPNETCORE_URLS http://+:80

参见 https://github.com/aspnet/aspnet-docker/blob/v2.0.0/2.0/jessie/runtime/Dockerfile#L4

关于docker - Docker Container中的“dotnet run”导致无法访问的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46456021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com