docker nginx-alpineとcertbotでSSL証明書自動更新

目標

docker-composeでnginx:alpineでwebサーバーを構築している。letsencryptでSSL化しているが、サーバー証明書が3か月しか持たない。これを自動更新することを目標とする。

  • docker-composeでnginx:alpineを起動
  • certbot をインストールしてSSL証明書を自動更新

コード

#/mnt/disk/server/www/docker/cron.sh
#!/bin/bash
docker exec -it <nginxコンテナ名> apk add certbot
docker exec -it <nginxコンテナ名> certbot certonly --webroot -w /var/www/certbot -d <ドメイン名> -n
$ crontab -e
0 9 * * * /mnt/disk/server/www/docker/cron.sh

certbotをインストールしようと、DockerfileにRUN apk add certbotとしてみたり、スクリプトを書いて/docker-entrypoint.d/に配置してみたりしたがうまくいかず、最終的にdockerの外から更新する上記に落ち着いた。

証明書は/etc/letsencryptで管理されているので、これをnginxでvolumeマウントするようにすればOK。

なお、証明書を更新したらサーバーの再起動をお忘れなく。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です