首页 文章

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

提问于
浏览
1

我正在尝试使用ASP.Net Core和Docker Build 开发环境 . 图像构建正确,容器运行没有问题 . 但是,即使我已经为主机和容器指定了5000的端口,dotnet仍然在一个既不包含指定端口也不可访问的URL上启动服务器 . 我期待听众在: http://localhost:5000

docker-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 app模板 . 这是我的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

有人能向我指出我错过了什么吗?

Additional question

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

在此先感谢,非常感谢任何帮助 .

1 回答

  • 0

    使用 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 images的定义,它将 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

相关问题