docker-compose配置依赖和启动顺序


问题

docker-compose配置容器启动顺序,有时依靠depends_on并不能完全解决,主要原因是:

解决方案

启动命令前增加判断依赖服务状态的工具

示例:

version: "2"
services:
  web:
    build: .
    ports:
      - "80:8000"
    depends_on:
      - "db"
    command: ["./wait-for-it.sh", "db:5432", "--", "python", "app.py"]
  db:
    image: postgres

自己编写script

#!/bin/sh
# wait-for-postgres.sh

set -e

host="$1"
shift
cmd="$@"

until PGPASSWORD=$POSTGRES_PASSWORD psql -h "$host" -U "postgres" -c '\q'; do
  >&2 echo "Postgres is unavailable - sleeping"
  sleep 1
done

>&2 echo "Postgres is up - executing command"
exec $cmd

测试:

command: ["./wait-for-postgres.sh", "db", "python", "app.py"]

wait-for命令测试

[root@node1 ~]# chmod a+x wait_for 
[root@node1 ~]# ./wait_for localhost:3306 -- echo "Mysql site is up"
Eficode site is up

文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
hbase设置ttl hbase设置ttl
Hbase关于TTL ColumnFamilies可以以秒为单位来设置 TTL(Time To Live)长度,一旦达到到期时间,HBase 将自动删除行。 设置 hbase.store.delete.expired.storefile 为
2020-11-12
下一篇 
docker目录映射加z或Z标签 docker目录映射加z或Z标签
配置selinux标签如果使用selinux,则可以添加z或Z选项来修改要装入容器的主机文件或目录的selinux标签。这会影响主机本身上的文件或目录,并可能导致超出Docker范围的后果。 该z选项指示绑定安装内容在多个容器之间共享。
2020-11-10
  目录