一尘不染

Docker等待PostgreSQL运行

docker

我在项目中将Django与PostgreSQL一起使用。我把它们放在不同的容器中,问题是我需要在运行django之前等待postgres。这时我正在用sleep 5django容器的command.sh文件执行此操作。我还发现netcat可以解决问题,但是我更喜欢没有附加软件包的方法。curl和wget无法执行此操作,因为它们不支持postgres协议。有办法吗?


阅读 367

收藏
2020-06-17

共1个答案

一尘不染

您的解决方案tiziano的问题是,默认情况下未安装curl,我想避免安装其他东西。无论如何,我做了贝雷亚尔所说的。这是脚本,如果有人需要的话。

import socket
import time
import os

port = int(os.environ["DB_PORT"]) # 5432

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
    try:
        s.connect(('myproject-db', port))
        s.close()
        break
    except socket.error as ex:
        time.sleep(0.1)
2020-06-17