docker-compose是否允许将端口映射到两个端口,还是需要大使?

时间:2016-10-23 08:42:45

标签: docker docker-compose ports

假设我有一个监听8888的应用程序 - 应用程序的其他部分想要继续在8888上访问它 - 但外部用户需要在50000以上的端口范围内访问它 - 例如50888

我想在docker-compose.yml中做的是:

ports:
  - "8888:8888"
  - "50888:8888"

这会有用吗?

我的另一种选择是在其中添加ambassador,如下所示:

blah:
  image: blah:6
  ports:
    - "8888:8888"
  container_name: blah
  networks:
    default: {}
blah_ambassador:
  image: svendowideit/ambassador
  links:
    - blah
  ports:
    - "50888:8888"
  environment:
    - BLAH_PORT_8888_TCP:tcp://blah:8888 
  container_name: ops_ambassador
  networks:
    default: {}

我的问题是: docker-compose是否允许将端口映射到两个端口,还是需要大使?

1 个答案:

答案 0 :(得分:3)

前段时间,docker-compose使用字典存储映射端口,密钥是内部端口,因此一个值覆盖另一个。

使用列表修复here。因此,目前,docker-compose允许将内部端口映射到两个端口。也许您正在使用较旧的docker-compose版本。

示例:

→ docker-compose -v
docker-compose version 1.8.0, build f3628c7

Docker-compose文件内容(docker-compose.yml):

backend:
  image: your_image
  ports:
    - 3000:3000
    - 8888:3000

docker inspect命令:docker inspect your_container_id

"Ports": {
            "3000/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "8888"
                },
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "3000"
                }
            ]
        },