docker-compose配置depends_on无法解决启动顺序问题解决方案

问题

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值