Docker と docker-compose のサービス化

Posted on 2018-11-18 in zakki

よく

停電するんですよウチ。こう書くと「この人はもしかして電気料金がちゃんと払えないほど生活が逼迫しているのかな…自前でサーバ立てる前にやることあるんじゃねえの?…」と悲しい目をされそうですが単に払い忘れているだけです。余計酷いわ。引き落としにしようしよう、と思って幾星霜。家賃もこんな感じだから困ります。家賃は払っていないとアラート(管理会社からの有難いお電話)が飛ぶのでまあ良いのですが、電気はそうならずにパッと給電されなくなる仕様なので、会社から帰ってきて真っ暗闇な自宅を見て「あー…」ということになります。

このサーバは

AWS Lightsail なので Amazon さんの機嫌を損ねない限り停止することはほぼほぼないです。ただ自宅はそんな有様なので、Vagrant で建てていた自 PC のサーバが軒並み死んでおりました。で、えっちらおっちら様子を見に行ったのですが、そこでテスト動作させていた Prometheus の過去データが無い事に気づき、そもそも再起動しても init から立ち上がらねえなこれ、となったので、永続化とか自動起動化とかしておこうと思ったわけです。最初からそう書いてほしい。

Docker の 自動起動化

このぐらいやっておけよって話だけど。

[vagrant@localhost ~]$ sudo systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[vagrant@localhost ~]$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2018-11-18 10:30:17 JST; 1h 33min ago
:

やったね。

docker-compose の systemd 化 と 自動起動化

/etc/systemd/system にユニットファイル(というらしい)を配置することでOK。

  • /etc/systemd/system/usr-prometheus.service
[Unit]
Description=usrPrometheus

[Service]
ExecStart=/usr/bin/docker-compose -p usrprometheus -f /home/vagrant/pro_docker/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -p usrprometheus -f /home/vagrant/pro_docker/docker-compose.yml down
ExecReload=/usr/bin/docker-compose -p usrprometheus -f /home/vagrant/pro_docker/docker-compose.yml restart
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

最小構成。

  • ExecStart
  • ExecStop
  • ExecReload

にコマンドイメージ渡すだけ。あとは下の記事を参考に設定。

-p のプロジェクト名ってどこで使うんだろう。使ったことがないせいかシーンが思いつかない、というかどこに出てくるんだかよくわからない。

https://qiita.com/little-forest/items/82870224493fa72eab8d

最後に自動起動化。

sudo systemctl enable usr-prometheus

永続化は?

いやまあ設定したんだけど、またあとで。