【问题标题】:Unique ID parameter in Docker-ComposeDocker-Compose 中的唯一 ID 参数
【发布时间】:2017-09-14 15:38:42
【问题描述】:

我正在努力实现的目标

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

到目前为止我已经尝试过什么

我创建了以下配置:

扎比克斯: 图片:zabbix/zabbix-agent:alpine-trunk 端口: - “10050:10050” 特权:真 重启:除非停止 环境: - 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

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

【问题讨论】:

  • 有一个similar question,但没有一个好的答案。我的建议是创建自己的 Docker 映像(基于原始映像),在其中设置环境变量。容器的想法是它们独立于主机环境运行,因此在主机上运行某种 pre/post 脚本并不符合 Docker 理念。
  • 所以使用环境变量毕竟不是那么糟糕:),谢谢!
  • 我正在考虑使用 dmidecode(或 RPi 中的 /proc/cpuinfo)作为主机名来实现一个 ID,我会告诉你进展如何。

标签: bash docker awk docker-compose zabbix


【解决方案1】:

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

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

unique_id=MY_ID docker-compose up

像魅力一样工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多