【发布时间】:2017-11-28 09:51:26
【问题描述】:
假设我有一个 docker-compose 文件如下:
version: '2'
services:
# The php-fpm container
app:
build:
context: ./
dockerfile: app.dev.dockerfile
working_dir: /var/www
volumes:
- ./:/var/www
expose:
- 8003
# The Web Server
web:
build:
context: ./
dockerfile: web.dockerfile
working_dir: /var/www
volumes_from:
- app
links:
- app:app
ports:
- 80:80
- 8004:8003
所以我喜欢从 Web 容器中的端口 8004 为 App 容器上的端口 8003 提供服务。 但我无法得到结果。 所以我的猜测是 Web 容器上 8004:8003 的 Web 端口映射仅限于 Web 容器。 还是实际映射到 App 容器上暴露的 8003 端口?
如果是这样,我如何测试 Web 端口 8004 实际上映射到 App 容器上的端口 8003?
有没有办法让我创建单向绑定(甚至更好的双向绑定)或将 App 容器上的端口 8003 映射到 Web 容器上的端口 8004?
如果我的主机正在运行一些 App 和 docker 服务(包括这两个容器),并且 App 试图在 Web 容器中侦听端口 8004,他实际上是在与 App 容器通信。
【问题讨论】:
-
出于好奇,您为什么要这样做?通过
app:8003到达 App 容器有什么问题? -
没问题。我在 App 容器上的端口 8003 上运行 xdebug,但我无法将控制权返回给我的代码。所以我想既然我通过我的 Web 容器提供应用程序容器数据文件,可能应该从 Web 容器本身提供 xdebug 端口。因此问题。我无法通过直接在 App 容器上执行 ports: 8003:8003 来使 xdebug 工作。
标签: docker docker-compose docker-networking docker-network