docker-compose up不监听指定端口

时间:2019-05-04 19:55:14

标签: docker docker-compose

当我运行docker-compose up时,尽管我的docker-compose.override.yml文件中配置了端口80,并且暴露了Dockerfile中的端口80,它仍然告诉我它在本地主机端口5000上监听。 >

我也尝试在docker-compose.yml中设置端口,但它仍然默认为端口5000

docker-compose.yml

version: '3'

services:
  myapp:
    image: me/myapp
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
    build:
      context: .
      dockerfile: MyApp.API/Dockerfile

docker-compose.override.yml

version: '3'

services:
  myapp:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "80:80"

Dockerfile:

...

EXPOSE 80

...

我遗漏了什么,这些问题会迫使docker-compose up监听yml中指定的端口?

2 个答案:

答案 0 :(得分:0)

启动ASP.NET应用程序的配置类型很重要。您可以通过将其放入这样的环境中来做到这一点:

Dockerfile

ENV ASPNETCORE_URLS=http://*:80

或者,您还可以在docker-compose.yml中对其进行定义:

version: '3'

services:
  myapp:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://*:80
    ports:
      - "80:80"

答案 1 :(得分:0)

Dockerfile中的EXPOSE指令实际上并未发布端口。它充当构建映像的人员和运行容器的人员之间的一种文档类型,有关打算发布哪些端口的信息。要在运行容器时实际发布端口,请使用docker run上的-p标志发布并映射一个或多个端口,或使用-P标志发布所有公开的端口并将其映射到高阶端口。

在您的情况下,所有控制都是通过docker compose完成的,我不会担心看到端口5000,因为它仍然无法访问。