" dotnet run"在Docker Container中导致无法访问的URL

时间:2017-09-27 19:42:41

标签: docker asp.net-core docker-compose dockerfile

我尝试使用ASP.Net Core和Docker设置开发环境。图像构建正确,容器运行没有问题。但是,即使我已经为主机和容器指定了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应用模板。这是我的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"]

搬运工-compose.yml

version: '3'
services:

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

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

其他问题

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

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

1 个答案:

答案 0 :(得分: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图片的定义,该图片将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