docker-compose up
私の特定のユースケースでは、複数のアプリケーションに再試行ロジックを提供したいと思います。
ギアを変更して使いやすいCDNインフラストラクチャに移動するときは、シェルコマンドを実行して単一のDockerコンテナからすべてを起動する方が簡単に見えます。
ただし、「常に動作」ロジックに対応する唯一のものは次のとおりです。
while true; do start-app || sleep 1; done
このシステムレベルの操作の便利な機能に加えて、実際にコマンドを常に実行できるようにするUnix / BASHの「再試行」ツールがあるかどうか疑問に思います。
答え1
システムをご利用いただけます。
たとえば、ファイルを生成します。/etc/systemd/system/yourapplication.service
[Unit]
Description=Your Super application
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/path/to/application
[Install]
WantedBy=multi-user.target
あるいは、以前の方法はinitを使用してアプリケーションを起動することです。
初期化スクリプトに1行追加
ap:2345:respawn:/bin/sh /somewhere/start-app
ap
サービスID(最大2文字)
2345
このエントリが適用される実行レベルを一覧表示します。
- 2 マルチユーザーモードは、ネットワークインタフェースを設定したりデーモンを起動したりしません。
- 3. ネットワークを使用してマルチユーザーモードでシステムを正常に起動します。
- 4未定義未使用/カスタマイズ可能
- ランレベル3 +ディスプレイマネージャ(X)である5 X11
respawn
行動のために
その後、コマンドを実行します。