假设我有一个监听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是否允许将端口映射到两个端口,还是需要大使?
答案 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"
}
]
},