システムの起動時にdocker-compose up -dを実行するにはどうすればいいですか? 質問する

システムの起動時にdocker-compose up -dを実行するにはどうすればいいですか? 質問する

起動時にコンテナを自動起動させるために、次のコマンドを追加してみました。

cd directory_has_docker-compose.yml && docker-compose up -d

/etc/rc.local

しかし、マシンを再起動した後、コンテナは動作しなくなりました。

docker-compose up -dシステムの起動時に実行するにはどうすればよいですか?

ベストアンサー1

crontabまたは非推奨のファイルを使用する場合/etc/rc.local、システム サービスが利用可能であることを確認するために遅延 (sleep 10マシンによって異なります) が必要です。通常、systemd(またはupstart) は、システムの起動時にどのサービスを開始するかを管理するために使用されます。これには、同様の構成を使用できます。

# /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

または、フラグなしで実行する場合-d:

# /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
StartLimitIntervalSec=60

[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

パラメータを Docker 化されたプロジェクト パスに変更しますWorkingDirectory。そして、サービスが自動的に開始されるようにします。

systemctl enable docker-compose-app

おすすめ記事