我想知道使用
之间有什么区别EXPOSE
在Dockerfile和Docker-Compose文件中?如果它在文件中声明而在另一个文件中声明怎么办?或者如果它在两者上声明但具有不同的值(端口号)会怎么样?
感谢
答案 0 :(得分:4)
Dockerfile
中的EXPOSE只是一个元数据信息。当有人使用docker run -P
哪些端口需要暴露时,告诉docker。
在compose或docker run中使用它们是指定这些端口的动态方式。因此,像nginx
或apache
这样的图像总是应该在容器内的端口80上运行,它将在Dockerfile本身中使用EXPOSE
。
虽然具有可使用环境变量控制的动态端口的图像将在docker run
或compose file
docker run -e UI_PORT=5556 --expose 5556 -P ....