如何为docker compose参数化端口



我正在尝试使用.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命令行运行没有这个限制。

重新定位文件后,可以解析变量。

相关内容

  • 没有找到相关文章

最新更新