Docker-Compose中的唯一ID参数

时间:2017-09-14 15:38:43

标签: bash docker awk docker-compose zabbix

我想要实现的目标

当我启动docker-compose.yml时,我可以使用唯一ID作为参数启动zabbix-agent容器。

到目前为止我尝试了什么

我创建了以下配置:

  zabbix:
    image: zabbix/zabbix-agent:alpine-trunk
    ports:
      - "10050:10050"
    privileged: true
    restart: unless-stopped
    environment:
      - ZBX_HOSTNAME="$MY_ARG" 
      - ZBX_SERVER_HOST="$MY_SERVER"

现在我想知道是否有办法在内部启动脚本填充$MY_ARG

可能的解决方法

只需在脚本中启动docker-compose up,我可以在其中添加参数并在内部读取它们:

…
# a script running before the docker-compose command:
export DIST=`grep -Po "^[A-Za-z]*" /etc/issue`
unique_id=$(case $DIST in
            Ubuntu)
               dmidecode -s baseboard-serial-number | tail -1
               ;;
            Raspbian)
               awk 'END{print $3}'  /proc/cpuinfo
               ;;
            *)
               echo None
               exit 1
        esac)

if awk -F= '/own/ && $2 != "" {err=1} END{exit err}' $ENV.env
then echo MY_ARG=$unique_id >> /etc/environment
# alternative way: export MY_ARG=$unique_id
fi

有什么想法?这真的是最好的方式吗?

1 个答案:

答案 0 :(得分:0)

知道了!我只需要在docker-compose.yml文件中添加export unique_id并使用$unique_id

我遇到的另一个问题是运行docker-compose down然后docker compose up,所以为了做到这一点,我在docker-compose命令前添加了变量,如下所示:

unique_id=MY_ID docker-compose up

像魅力一样!