0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイサーバー起動時に自動でdocker compose upする

Posted at

1. やりたいこと

ラズパイを自宅サーバーとして運用していますが、再起動する際にいくつかあるアプリについていちいちdocker compose upするのが面倒なので、systemdから自動起動するようにします

2. 技術選定

いろいろ比較した結果、systemd一択っぽいです

.bashrcを使う方法

ログインしないと実行されないので、単に電源が投入されただけでは動いてくれません。電源だけ入れた状態でもう動いていてほしいので今回はダメ

cron @rebootを使う方法

簡単ですがログ出力やエラー追跡が困難なようです

systemdを使う方法

再起動後に確実に実行できる、ログの出力方法や保存場所をサービス単位でカスタマイズできるなど、今回の用途に十分ですのでこれでいきたいと思います

3. 手順

以下の手順で設定します
・1.systemd serviceファイルを作成する
・2.serviceを有効にする
・3.serviceを開始する

3-1. systemd serviceファイルを作成する

/etc/systemd/system/に拡張子がserviceであるファイルを置くとsystemdサービスとして扱われます。今回はラズパイなのでnanoエディタで作成編集していきます

sudo touch etc/system/hoge.service
sudo nano etc/system/hoge.service 

/hoge/ユーザー名/dev/hoge/docker-compose.yml を実行する場合、以下のように書きます。特に説明を受けなくても何をやっているか分かるのが良いですね

/etc/systemd/system/hoge.service
[Unit]
Description=Start hoge Docker Compose project at boot
After=network-online.target docker.service
Requires=docker.service

[Service]
Type=oneshot
WorkingDirectory=/home/ユーザー名/dev/hoge
ExecStart=/usr/bin/docker compose up --build -d
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

3-2. サービスを有効にする

自動起動する為にはenableしておく必要があります

terminal
sudo systemctl daemon-reexec
sudo systemctl enable hoge

3-3. サービスを起動する

次回からシステムが起動するとサービスが実行されますが、現在は起動していない状態ですので以下コマンドで起動しておきます。ここで一度起動しておけば、作成したサービスに不具合があるなどした場合にすぐ分かります

terminal
sudo systemctl start rp5_sensor.service

まとめ

簡単ですね
レッツトライ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?