如何使用 .env 参数化 dockerfile?
How to parameterize dockerfile with .env?
This 没有解决我的问题,因为我没有转义问题。
我有一个rabbit.env
:
NETWORK_NAME=uv_atp_network
和一个 dockerfile
version: '2.3'
networks:
atp:
name: $NETWORK_NAME
external: true
services:
rabbitmq_local:
image: 'rabbitmq:3.6-management-alpine'
ports:
- '5672:5672'
- '15672:15672'
networks:
- $NETWORK_NAME
两者在同一个文件夹中。
当运行
@pytest.mark.usefixtures("network",)
def test_rabbit_up(client, session_scoped_container_getter):
pass
调用 docker-compose up
behind the scenes,我得到
Service "rabbitmq_local" uses an undefined network ""
我做错了什么?
在 Compose 文件中,您已将网络命名为 atp
networks:
atp: # <-- you need this name
settings: don't matter to this naming question
因此在容器定义中引用它时需要使用该名称
services:
rabbitmq_local:
networks:
- atp # <-- the Compose file name of the network
由于此名称是 Compose 文件的本地名称,您可以选择任何您想要的名称。特别是,您可以将网络命名为 default
,其中 reconfigures the default network Compose creates;如果你这样做,你不需要为个别服务提及它。
networks:
default: { external: true, name: $NETWORK_NAME }
services:
rabbitmq_local:
# no networks:, Compose will provide `networks: [default]` for you
This 没有解决我的问题,因为我没有转义问题。
我有一个rabbit.env
:
NETWORK_NAME=uv_atp_network
和一个 dockerfile
version: '2.3'
networks:
atp:
name: $NETWORK_NAME
external: true
services:
rabbitmq_local:
image: 'rabbitmq:3.6-management-alpine'
ports:
- '5672:5672'
- '15672:15672'
networks:
- $NETWORK_NAME
两者在同一个文件夹中。
当运行
@pytest.mark.usefixtures("network",)
def test_rabbit_up(client, session_scoped_container_getter):
pass
调用 docker-compose up
behind the scenes,我得到
Service "rabbitmq_local" uses an undefined network ""
我做错了什么?
在 Compose 文件中,您已将网络命名为 atp
networks:
atp: # <-- you need this name
settings: don't matter to this naming question
因此在容器定义中引用它时需要使用该名称
services:
rabbitmq_local:
networks:
- atp # <-- the Compose file name of the network
由于此名称是 Compose 文件的本地名称,您可以选择任何您想要的名称。特别是,您可以将网络命名为 default
,其中 reconfigures the default network Compose creates;如果你这样做,你不需要为个别服务提及它。
networks:
default: { external: true, name: $NETWORK_NAME }
services:
rabbitmq_local:
# no networks:, Compose will provide `networks: [default]` for you