如何为 docker-compose 参数化端口?
How to parameterize ports for docker-compose?
我正在尝试使用 .env
参数化 docker-compose 文件。 Doc
docker-compose.yml
version: '2.3'
networks:
default: { external: true, name: $NETWORK_NAME }
services:
rabbitmq_local:
image: 'rabbitmq:3.6-management-alpine'
ports:
# The standard AMQP protocol port
- ${RABBIT_PORT}:5672
# HTTP management UI
- '15672:15672'
.env 文件
NETWORK_NAME=uv_atp_network
RABBIT_PORT=5672
RABBIT_HTTP_MANAGEMENT_PORT=15672
参数化 NETWORK_NAME
有效,但参数化 RABBIT_PORT
无效,
The Compose file 'docker-compose.yml' is invalid because:
services.rabbitmq_local.ports contains an invalid type, it should be a number, or an object
这让我怀疑 RABBIT_PORT
被解释为字符串而不是数字。
如何正确参数化它?
编辑
我发现强制变量是强制的
- ${RABBIT_PORT:?unspecified_rabbit_port}:5672
给出错误,意味着它未设置或为空。
我做错了什么?
似乎 运行 pytest and pytest-docker-compose 时 .env
文件必须与 pytest.ini
文件一起位于 pytest
的根文件夹中。
运行 from docker-compose from command-line 在 docker 1.24 中没有这个限制。
重定位文件后,可以解析变量。
我正在尝试使用 .env
参数化 docker-compose 文件。 Doc
docker-compose.yml
version: '2.3'
networks:
default: { external: true, name: $NETWORK_NAME }
services:
rabbitmq_local:
image: 'rabbitmq:3.6-management-alpine'
ports:
# The standard AMQP protocol port
- ${RABBIT_PORT}:5672
# HTTP management UI
- '15672:15672'
.env 文件
NETWORK_NAME=uv_atp_network
RABBIT_PORT=5672
RABBIT_HTTP_MANAGEMENT_PORT=15672
参数化 NETWORK_NAME
有效,但参数化 RABBIT_PORT
无效,
The Compose file 'docker-compose.yml' is invalid because:
services.rabbitmq_local.ports contains an invalid type, it should be a number, or an object
这让我怀疑 RABBIT_PORT
被解释为字符串而不是数字。
如何正确参数化它?
编辑
我发现强制变量是强制的
- ${RABBIT_PORT:?unspecified_rabbit_port}:5672
给出错误,意味着它未设置或为空。
我做错了什么?
似乎 运行 pytest and pytest-docker-compose 时 .env
文件必须与 pytest.ini
文件一起位于 pytest
的根文件夹中。
运行 from docker-compose from command-line 在 docker 1.24 中没有这个限制。
重定位文件后,可以解析变量。