コンテナをソートするためにdepends_onを使用しても、コンテナ間の依存関係の問題は完全には解決されません。その理由は、depends_onではコンテナが完了状態ではなく実行状態になることしか保証できないためです(どのように説明すればよいかわかりません)。 起動時に最初に起動する必要があるコンテナに wait-for-it または wait-for を使用してアクセスし、アクセスが成功したら起動するという解決策がネット上に挙げられていますが、詳細が不十分で、内容が似たものも多数あります (ここでは環境が乱雑であることに不満を述べたいと思います)。 私がバカなのかもしれない、解決するのに1日かかったので、ここに記録しておきます。 文章:パッケージ化された ar ファイルを nacos に登録することが要件ですが、nacos の起動が遅いため、逐次設定が必要となります。 仮想マシンまたはサーバー上の必要な jar ファイルを削除します。次に FROM openjdk:8-jre // openjdk ベース COPY wait-for . //wait-forを仮想マシンにコピー RUN apt-get update //ソースを更新、 RUN apt-get install netcat -y // netcat をインストールします。wait-for では WORKDIR /app を使用する必要があります // ランディング ポイントを設定します ADD course.jar course.jar // jar ファイルを仮想マシンに追加します EXPOSE 8002 // 公開するポート 私の設定は画像に基づいており、コード ブロックは理解を深めるためのものです。違いはないはずです。 docker-compose バージョン: '3.0' サービス: ナコス: イメージ: nacos/nacos-server:1.1.4 コンテナ名: nacos ポート: - 「8848:8848」 環境: モード: スタンドアロン # nacos シングルノード実行コース: ビルド: /root/ コンテナ名: コース ポート: - 「18002:18002」 依存: -ナコス コマンド: ["sh","wait-for","nacos:8848","--","java","-jar","course.jar"] ここではあまり詳しく説明しません。いつもとあまり変わりません。 以前見つけた投稿には dockerfile ファイルが投稿されていませんでした。ここで最も重要なのは、 私の #!/bin/sh # MITライセンス(MIT) # # 著作権 (c) 2017 Eficode Oy # # 本書の複製を入手したすべての人に、無償で許可を与える。 # このソフトウェアおよび関連するドキュメントファイル(以下「ソフトウェア」)の # ソフトウェアのいかなる制限も含まない権利。 # 使用、コピー、変更、統合、公開、配布、サブライセンス、および/または販売 # ソフトウェアのコピー、およびソフトウェアを配布された人物に許可を与えること # 以下の条件に従って、そうすることが許可されます。 # # 上記の著作権表示とこの許可通知は、すべての # ソフトウェアのコピーまたは大部分。 # # ソフトウェアは「現状のまま」提供され、いかなる種類の保証も明示的または黙示的に提供されません。 # 黙示的保証(商品性保証を含むがこれに限定されない) # 特定の目的への適合性と非侵害。いかなる場合も、 # 著者または著作権者は、いかなる請求、損害、その他の責任も負いません。 # 契約違反、不法行為、その他の理由による責任は、 # ソフトウェアまたはその使用もしくはその他の取引に関連して # ソフトウェア。 設定 -- "$@" -- "$TIMEOUT" "$QUIET" "$PROTOCOL" "$HOST" "$PORT" "$result" タイムアウト=60 静か=0 # リクエストを行うプロトコル。"tcp" または "http" のいずれか プロトコル="tcp" エコーエラー(){ if [ "$QUIET" -ne 1 ]; then printf "%s\n" "$*" 1>&2; fi } 使用法() { 終了コード="$1" cat << 使用法 >&2 使用法: $0 ホスト:ポート|url [-t タイムアウト] [-- コマンド引数] -q | --quiet ステータスメッセージを出力しない -t TIMEOUT | --timeout=timeout タイムアウトは秒単位で、0 の場合はタイムアウトなし -- コマンド引数 テスト終了後に引数付きコマンドを実行する 使用法 終了 "$exitcode" } 待機() { ケース「$PROTOCOL」 通信プロトコル if ! command -v nc >/dev/null; then echoerr 'nc コマンドがありません!' 出口1 フィ ;; wget) if ! command -v wget >/dev/null; then echoerr 'wget コマンドがありません!' 出口1 フィ ;; エサック ながら:; 行う ケース「$PROTOCOL」 通信プロトコル nc -w 1 -z "$HOST" "$PORT" > /dev/null 2>&1 ;; (http://www.facebook.com/Selenium) wget --timeout=1 -q "$HOST" -O /dev/null > /dev/null 2>&1 ;; *) echoerr "不明なプロトコル '$PROTOCOL'" 出口1 ;; エサック 結果=$? [ $result -eq 0 ] の場合; [ $# -gt 7 ] の場合; 結果が$(seq $(($# - 7)))の場合、 結果=$1 シフト 設定 -- "$@" "$result" 終わり タイムアウト=$2 QUIET=$3 プロトコル=$4 ホスト=$5 ポート=$6 結果=$7 シフト7 実行 "$@" フィ 終了 0 フィ [ "$TIMEOUT" -le 0 ]の場合; 壊す フィ タイムアウト=$((タイムアウト - 1)) 睡眠1 終わり echo "操作がタイムアウトしました" >&2 出口1 } ながら:; 行う ケース「$1」 http://*|https://*) ホスト="$1" プロトコル="http" シフト1 ;; *:* ) HOST=$(printf "%s\n" "$1"| cut -d : -f 1) ポート=$(printf "%s\n" "$1"| cut -d : -f 2) シフト1 ;; -q | --quiet) 静か=1 シフト1 ;; -q-*) 静か=0 echoerr "不明なオプション: $1" 使用法 1 ;; -q*) 静か=1 結果=$1 シフト1 設定 -- -"${result#-q}" "$@" ;; -t | --timeout) タイムアウト="$2" シフト2 ;; -t*) タイムアウト="${1#-t}" シフト1 ;; --timeout=*) タイムアウト="${1#*=}" シフト1 ;; --) シフト 壊す ;; - ヘルプ) 使用法 0 ;; -*) 静か=0 echoerr "不明なオプション: $1" 使用法 1 ;; *) 静か=0 echoerr "不明な引数: $1" 使用法 1 ;; エサック 終わり if ! [ "$TIMEOUT" -ge 0 ] 2>/dev/null; then echoerr "エラー: 無効なタイムアウト '$TIMEOUT'" 使用法 3 フィ ケース「$PROTOCOL」 通信プロトコル [ "$HOST" = "" ] || [ "$PORT" = "" ]の場合 echoerr "エラー: テストするにはホストとポートを指定する必要があります。" 使用法 2 フィ ;; (http://www.facebook.com/Selenium) [ "$HOST" = "" ]の場合; echoerr "エラー: テストするホストを指定する必要があります。" 使用法 2 フィ ;; エサック wait_for "$@" Docker-compose のdepends_on order問題の解決方法についてはこれで終わりです。Docker-compose のdepends_on orderに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CSS 3.0 テキストホバージャンプ特殊効果コード
>>: ウェブページで任意のフォントを使用する実践的な操作とデモ
序文前回はLinearLayoutについて説明しました。今回はFrameLayoutの使い方を説明し...
目次問題の説明:インストール手順1. 準備2. サーバーにリモート接続する3. 証明書と秘密鍵ファイ...
目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...
目次1. 使いやすい2. 関数内でジェネリックを使用する3. クラス内でジェネリックを使用する4. ...
目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...
LinuxリモートMySQLデータベースの展開、参考までに、具体的な内容は次のとおりです。 1.0 ...
まず、Moments を開いて、写真の数が異なるいくつかのレイアウトを確認するか、以下の例を参照して...
序文最初はCentOS8でwgetを使ってダウンロードし、解凍して環境変数を設定するつもりだったので...
目次開発の際には、機能を段階的に分析して実装することで、明確な考え方を保つことができます。 1. フ...
このプロジェクトでは、Vue+Router+Element の具体的なコードを共有して、シンプルなナ...
目次1. ポーテナーの紹介2. Portainer アーキテクチャの概要3. Portainerのイ...
目次1. まず最初のリンクを取得する2. ブラウザでこのリンクを開いてください3. アドレスを開くと...
次のコマンドを実行します: glxinfo | grep レンダリング結果が「はい」の場合、グラフィ...
目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...
目次1. SQLコマンドを含むSQLスクリプトファイルを作成する2. SQLスクリプトファイルを実行...