我在 docker 容器中运行 keepalived,作为其中的一部分,我需要在它更改状态时运行一些通知脚本。如果我可以通过启动时传入的环境变量动态更改其中一些脚本的行为,那将很有用。关于keepalived调用的通知shell脚本是否可以使用docker中设置的环境变量,我还没有得到明确的答案。
例如,假设我们像这样启动一个 docker 实例,其中包含环境变量 FOO:
keepalive-1:
tty: true
privileged: true
environment:
CLUSTER_NETWORK: 172.28.5.10/24
CLUSTER_MANAGEMENT_IP: 172.28.5.20
FOO: BAR
build:
dockerfile: Dockerfile.keepalive
networks:
my-network:
ipv4_address: 172.28.5.10
如果我有这样的通知脚本:
#!/bin/bash
TYPE=$1
NAME=$2
STATE=$3
case $STATE in
"MASTER")
echo "${FOO} is MASTER"
exit 0
;;
"BACKUP"|"FAULT")
echo "${FOO} is BACKUP"
exit 0
;;
*)
echo "unknown state $3"
exit 1
;;
esac
当我切换到 MASTER 时,这会返回什么?
- “酒吧是大师”
- “${FOO} 是主”
- “是大师”