【发布时间】:2019-02-08 01:11:16
【问题描述】:
我在 docker-compose 中定义了 docker 环境。 它有 3 个容器。两个带有数据库,第三个带有 cli 脚本解释器。
第 3 个容器必须等待 2 个 db 容器接受连接。
当我只有一个数据库容器时,这很简单。 第三个容器(基于 Alpine)entrypoint.sh:
#!/bin/sh
while ! nc -z $MYSQL_HOST $MYSQL_PORT; do
echo "Waiting for MySQL to accept connections ..."
sleep 0.2
done
echo "MYSQL ready"
exec "$@"
现在有了第二个容器,我想使用嵌套循环来解决这个问题,但由于 posix shell 通常不支持数组,我不知道具体如何。
大致思路是创建一个字符串,host1:port1用空格隔开
#!/bin/sh
SERVERS="DB1_HOST:DB1_PORT DB2_HOST:DB2_PORT"
通过使用空格创建项目(我认为 IFS=' ' )循环遍历它,而不是使用 DB:PORT 来检查使用 nc 的连接,并在连接成为可能时从 SERVERS 变量中删除 DB:PORT。
我主要担心的是我不知道如何从 SERVERS 变量中删除 DB:PORT。
【问题讨论】: