【发布时间】: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