1. ホーム
  2. postgresql

[解決済み] Dockerでpostgresqlの実行を待つ

2023-07-21 23:39:57

質問

私はプロジェクトでdjangoと一緒にpostgresqlを使用しています。私はそれらを異なるコンテナで持っており、問題は、djangoを実行する前にpostgresを待つ必要があることです。現時点では、私はそれを sleep 5 でやっています。 command.sh ファイルに追加します。netcat でもうまくいくことがわかりましたが、追加パッケージのない方法を希望します。 curlwget はpostgresのプロトコルをサポートしていないため、これを行うことができません。 これを行う方法はありますか?

どのように解決するのですか?

あなたの解決方法の問題は、curlがデフォルトでインストールされていないことと、追加のものをインストールするのを避けたかったことです。とにかく、私はberealが言ったことをやりました。誰かがそれを必要とするならば、ここにスクリプトがあります。

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)