Docker compose:将随机容器端口传递给环境变量
是否可以在docker compose文件中将有关NetworkSetting的容器信息设置到环境变量中 我有以下docker-compose.yml文件:Docker compose:将随机容器端口传递给环境变量,docker,docker-compose,Docker,Docker Compose,是否可以在docker compose文件中将有关NetworkSetting的容器信息设置到环境变量中 我有以下docker-compose.yml文件: version: '3.7' services: sdt-proxy: image: myimage ports: - 32770-32780:8181 environment: - SERVER_PORT=8181 它将端口8181映射到32770-32780之间的随机端口。当我使用d
version: '3.7'
services:
sdt-proxy:
image: myimage
ports:
- 32770-32780:8181
environment:
- SERVER_PORT=8181
它将端口8181映射到32770-32780之间的随机端口。当我使用docker compose up
运行容器时,我可以使用docker inspect
查看映射的端口:
.....
"NetworkSettings": {
"Bridge": "",
"SandboxID": "83e6933aaf7b09b8ae1238d3dbb71bdd495c14927a5a509b332afc17cda6d854",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"8181/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32771"
}
]
},
...
因此,我知道内部端口8181(我在容器中运行的应用程序)映射到端口32771
我需要将此信息(容器端口32771)传递给我的应用程序,是否可以在docker compose文件中执行类似操作
version: '3.7'
services:
sdt-proxy:
image: myimage
ports:
- 32770-32780:8181
environment:
- SERVER_PORT=8181
- MY_CONTAINER_PORT= <the running container port 32771>
版本:“3.7”
服务:
sdt代理:
图片:myimage
端口:
- 32770-32780:8181
环境:
-服务器端口=8181
-我的\u容器\u端口=
为什么容器内的东西需要知道容器外的东西在哪个端口看到它?该docker compose
文件中还有哪些其他服务,以及它们如何连接到sdt代理
?如果您的应用程序位于另一个容器中,您可以使用相同的docker compose up
命令启动,它可以直接在sdt proxy:8181
上访问该服务。除此之外,@jonrsharpe的评论的答案将是有趣的。@jonrsharpe sdt代理应用程序需要将此信息推送到另一个主机服务(就像它是一个服务寄存器一样)。