起動時にコンテナを自動起動させるために、次のコマンドを追加してみました。
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