2016-12-22 18 views
0

dockerコンテナを起動するためのsystemdスクリプトをdcoker-composeubuntu 16.04 LTSサーバに書きました。私はそれがうまく機能sudo systemctl start swoop.mongo.serviceでサービスを開始するとここで リブート時にsystemdサービスが実行されていない

は、スクリプトファイル /etc/systemd/system/swoop.mongo.service

[Unit] 
Description=Swoop MongoDb Server container 
Requires=docker.service 
After=docker.service 

[Service] 
TimeoutStartSec=0 

ExecStart=/usr/bin/docker-compose -f /var/www/swoop/docker-compose.yml up -d mongo3 mongo2 mongo1 mongosetup 

Restart=always 
RestartSec=10s 
Type=notify 
NotifyAccess=all 

[Install] 
WantedBy=local.target 

です。 サーバを再起動すると、サーバに障害が発生し、サービスのステータスは無効になります。

$ systemctl status swoop.app.service 
● swoop.app.service - Swoop App Server container 
Loaded: loaded (/etc/systemd/system/swoop.app.service; disabled; vendor preset: enabled) 
Active: inactive (dead) 
+3

有効にしましたか? 'systemctl enable swoop.mongo' – nos

+0

いいえ、まだありません。 Lemme –

+0

@nosありがとう、それは動作します。あなたはそれを私が受け入れる答えとして書くことができます。 –

答えて

1

docker runコマンドのオプション--restart=alwaysを使用すると、コンテナの実行中に、いくつかの特別な要件を持っていない場合、私はそれをお勧めします、があります。

同じ概念がdocker-composeに適用されます。

restart: always

ポリシー:

  • no:それは終了したときに自動的にコンテナを再起動しないでください。これはデフォルトの です。
  • on-failure[:max-retries]:コンテナが終了し、 の終了ステータスが0以外の場合にのみ再起動します。オプションで、再起動の再試行回数を制限する Dockerデーモンの試行回数。
  • always:終了ステータスに関係なく常にコンテナを再起動してください。 alwaysを指定すると、Dockerデーモンは コンテナを無期限に再起動しようとします。コンテナは、コンテナの現在の状態にかかわらず、常に デーモンの起動時にも開始されます。
  • unless-stopped:出口は のステータスにかかわらず常にコンテナを再起動しますが、コンテナには が以前に停止状態になっているとデーモンの起動時に起動しないでください。

systemdサービスが終了するまで、rebootsの後に自動的に開始されるようにサービスを有効にする必要があります。

sudo systemctl enable <service name>

更新:

あなたはWantedBy=local.target

WantedBy=multi-user.targetにmulti-user.targetを交換する必要があります:マルチユーザー、非グラフィカル。ユーザーは通常複数のコンソールまたはネットワーク経由で にログインできます。

+0

また、 'WantedBy = local.target'を' WantedBy = multi-user.target'に変更して動作させる必要があります。 –

+0

他人を助けることができるように答えを更新しました。 –

+0

'multiuser'ではなく' multi-user'ですか? –

関連する問題