Docker便利ですよね。使ってますか?
Dockerで常時起動のサービスを作りたいと思った時、選択肢はたくさんあります。
K8s, Docker Swarm…このあたり使えば、いい感じにサービスを管理できます。
でも今は、クラスタなんていらない、もっとカジュアルにホームサーバでサービス起動したい!
docker で起動時に restart=always を付けてもいいけど、いまいち管理がしにくい…!
そんな時は systemd でサクッとサービス定義しちゃいましょう。
ここでは、/home/services/ 以下に(サービス名)のディレクトリを作成して、docker-compose.yml を作成することを想定しています。
ごみ処理とか、環境変数読み込む処理とか入れてもいいのですが、今回は最低限で行きます。
[Unit] Description=Launch service with compose: %i Requires=docker.service After=docker.service [Service] Type=simple ExecStart=/usr/bin/docker-compose up Restart = always WorkingDirectory=/home/services/%i [Install] WantedBy=multi-user.target
これを、/etc/systemd/system/compose-service@.service というファイル名で作成し…
/home/services/(サービス名)/docker-compose.yml に、サービスを記述…
すると、
sudo systemctl start compose-service@(サービス名)
で起動できちゃいます。すごく便利。
もちろん、systemd なので、
sudo systemctl enable compose-service@(サービス名)
で自動起動にできます。いい感じ。
また、もちろん、systemd なので…
sudo journalctl -u compose-service@(サービス名)
でログも見れます。いい感じ。
あと、ほかのサービスと同様に、systemd のUnitファイルで依存関係をかけば、ちゃんと起動順序も制御できます! とっても、いい感じ!
コメント