首页 > 解决方案 > 如何自定义生命周期环境名称作为 docker-compose.yaml 的一部分

问题描述

如何自定义生命周期环境名称作为 docker-compose.yaml 的一部分。我想在 .env 文件中指定环境名称,我希望它反映在 docker-compose.yaml 中,但这没有得到正确反映

volumes:
  elasticsearch-data-dev:

networks:
  elasticsearch-network-dev:

标签: docker-compose

解决方案


您可以通过一个简单的 bash 脚本来实现这一点:

docker-compose.yaml

version: '3'

services:
  app_${MYENV}:
    image: busybox
    container_name: app_${MYENV}
    networks:
    - network_${MYENV}
    
  networks:
    network_${MYENV}:

运行.sh

#!/bin/bash
MYENV=${1}
COMPOSE=`eval "echo \"$(cat docker-compose.yaml)\""`
echo "$COMPOSE" | docker-compose -f - up
./run.sh dev
./run.sh prod

示例运行:

$ ./run.sh dev
Starting app_dev ... done
$ docker ps
f33b113f9d2b ... app_dev
$ docker network ls
436386f4eb80        demo_network_dev    bridge              local

推荐阅读