VMの再起動時に、コンテナを自動で立ち上げたい、そんな時に。

コンテナを動かしている時、なんらかの理由でVMを再起動する場合があります。
例えば…

  • インスタンス費用を節約する為に、定期的にVMを上げ下げ
  • インスタンスタイプを変更したいので、再起動が必要

そんな時、コンテナが自動で起動してくれると非常に楽ですね♪
今回は、systemdを使って、起動したいコンテナを管理するservice設定ファイルを作ります。

1. 設定ファイルを書く

設定ファイル(myservice.service)を作成します。

今回は、docker-composeを使うため、docker-compose.ymlがあるディレクトリでコマンドを実行する必要があります。 もちろん、WorkingDirectoryを使わずに、ymlを引数で指定してもOK!

[Unit]
Description=My Service
After=docker.service
Requires=docker.service

[Service]
WorkingDirectory=<docker-compose.ymlのディレクトリ>
ExecStartPre=/opt/bin/docker-compose build
ExecStart=/opt/bin/docker-compose up -d

[Install]
WantedBy=multi-user.target

2. serviceを登録する

ファイルをコピーして、systemdのservice設定ファイルを反映するため、reload。

sudo cp myservice.service /etc/systemd/system/
sudo systemctl daemon-reload

あとは、サービスがOS起動時に実行されるように設定し、start!!

sudo systemctl enable myservice.service
sudo systemctl start myservice.service

まとめ

今回は、systemdのservice設定ファイルで、マシン起動時にコンテナを起動するように設定してみました。

ただ、[Service]にExecStop=/opt/bin/docker-compose stopを記載するとうまく動きませんでした。何故?