docker-compose 是否允许将一个端口映射到两个端口,或者我需要大使吗?
Will docker-compose allow mapping a port to two ports or do I need an ambassador?
假设我有一个侦听 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 是否允许将一个端口映射到两个端口,或者我需要大使吗?
前段时间,docker-compose使用字典来存储映射端口,key是内部端口,所以一个值覆盖了另一个。
已使用列表解决此问题 here。因此,目前,docker-compose 允许将一个内部端口映射到两个端口。也许您使用的是较旧的 docker-compose 版本。
示例:
→ docker-compose -v
docker-compose version 1.8.0, build f3628c7
Docker-撰写文件内容(docker-compose.yml
):
backend:
image: your_image
ports:
- 3000:3000
- 8888:3000
docker 检查命令:docker inspect your_container_id
"Ports": {
"3000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8888"
},
{
"HostIp": "0.0.0.0",
"HostPort": "3000"
}
]
},
假设我有一个侦听 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 是否允许将一个端口映射到两个端口,或者我需要大使吗?
前段时间,docker-compose使用字典来存储映射端口,key是内部端口,所以一个值覆盖了另一个。
已使用列表解决此问题 here。因此,目前,docker-compose 允许将一个内部端口映射到两个端口。也许您使用的是较旧的 docker-compose 版本。
示例:
→ docker-compose -v
docker-compose version 1.8.0, build f3628c7
Docker-撰写文件内容(docker-compose.yml
):
backend:
image: your_image
ports:
- 3000:3000
- 8888:3000
docker 检查命令:docker inspect your_container_id
"Ports": {
"3000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8888"
},
{
"HostIp": "0.0.0.0",
"HostPort": "3000"
}
]
},