社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

docker映像、docker compose和服务调用的公开端口的单一配置

Alan Storm • 5 年前 • 1531 次点击  

我有一个docker-compose.yml文件,简化如下

slim-first:
  image: slim-image
  expose:
    - 9191

slim-second:
  image: slim-image
  expose:
    - 9192

这个 slim-image 图像来自 Dockerfile 使用以下命令启动服务(使用php slim框架)

#File: Dockerfile

# ...

CMD ["/usr/local/bin/php", "-S", "0.0.0.0:9191", "-t", "/slim/public"]

您可能已经发现了这个问题——我需要为php的内置web服务器提供一个端口。不过,我想开始 服务——每个都在不同的端口上可用。

我的问题:在我的 文档文件 访问 expose 我的D端口值 docker-composer.yml 文件?

或者是将端口号复制到 文档文件 可以看到。

或者有第三条路径可以让我只在一个地方配置端口值吗?

澄清一下,我知道我可以这样做

slim-second:
  image: slim-image
  expose:
    - 9192
  args:
    - PORT=9192

...

ARG PORT=9191
CMD ["/usr/local/bin/php", "-S", "0.0.0.0:$PORT", "-t", "/slim/public"]

但我不想在docker-compose.yml文件中重复端口两次。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40723
 
1531 次点击  
文章 [ 1 ]  |  最新文章 5 年前
David Maze
Reply   •   1 楼
David Maze    6 年前

这无关紧要:您可以在多个容器中运行服务器,这些容器都侦听同一端口,并将它们映射到主机上不同的已发布端口。

我会在Dockerfile中硬编码端口;说它总是端口9191。然后在 docker-compose.yml 可以设置的文件

slim-first:
  image: slim-image
  ports: ["9191:9191"]
slim-second:
  image: slim-image
  ports: ["9192:9191"]

这两个容器可以从主机上的不同端口访问。

(在Dockerfile中公开主要是文档;它有两个很少相关的副作用。 expose: 在Docker中,compose文件对您没有多大帮助。)