私には docker compose ファイルが 1 つあります。以下に示すように:
バージョン: "3.9" サービス: mysqldb: 画像: mysql:5.7 コンテナ名: mysqlコンテナ コマンド: --default-authentication-plugin=mysql_native_password ボリューム: - ./db/init.sql:/docker-entrypoint-initdb.d/0_init.sql ポート: - 3306:3306 さらす: - 3306 環境: MYSQL_DATABASE: "todos" MYSQL_USER: "管理者" MYSQL_PASSWORD: "パスワード" MYSQL_ROOT_PASSWORD: "パスワード" SERVICE_TAGS: 開発 SERVICE_NAME: mysqldb 再起動: 失敗時 ネットワーク: - 内部ネット エクスプレスアプリ: コンテナ名: API 建てる: 。 画像: Expressapp:1.0 ポート: - 「3001:3001」 さらす: - 「3001」 環境: DB_HOST: mysqldb DB_ポート: 3306 DB_USER: "管理者" DB_PASSWORD: "パスワード" DB_NAME: やるべきこと DB_CONNECTION_LIMIT: 20 SERVICE_TAGS: 開発 SERVICE_NAME: エクスプレスアプリ ポート: 3001 依存: -mysqldb ネットワーク: - 内部ネット ネットワーク: 内部ネット: ドライバー:ブリッジ ボリューム: データベース:
結果、docker compose up -d
コマンド実行コンテナを使用し、ps
コマンド実行中のコンテナを使用すると、次の出力が得られます。
ただし是当我尝试向サービス务器発行
API 请要求時,我收到以下错误メッセージ:
DB_HOST
の量は mysql
サービス名に設定されていますか?
この問題は、
mysql
がクエリに使用できるようになる前にexpressapp
が開始されるために発生する可能性があります。サービスの起動順序を制御するには、
depends_onhealthcheck
をmysqldb
サービスに追加します。 ###健康診断: テスト: mysql ${MYSQL_DATABASE} --user=${MYSQL_USER} --password='${MYSQL_PASSWORD}' --silent --execute "SELECT 1;" 間隔: 30秒 タイムアウト: 10秒 再試行: 5ブロックから
依存: mysqldb: 条件: service_healthy
ここでexpressapp
これについて詳しくは、この
answerを参照してください。