当我运行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中指定的端口?
答案 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,因为它仍然无法访问。