我正在尝试使用.env
参数化docker compose文件。单据
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和pytest docker compose运行时,.env
文件必须与pytest.ini
文件一起位于pytest
的根文件夹中。
在docker 1.24中,从docker compose命令行运行没有这个限制。
重新定位文件后,可以解析变量。