Server

https-portalで既存のdocker環境をhttps化

投稿日:2019年3月28日 更新日:

はじめに

こんにちは。最近dockerを触ってばかりいます。以前、ローカルでオレオレ証明書をサクッと発行する方法をご紹介しましたが、その記事の最後にご紹介した https-portal を使い、今回はdocker-composeのみでhttps化をしてみようと思います。

環境はmacOS High Sierra 10.13.6, Docker Desktop 2.0.0.3です。

https-portalとは

dockerで構築したサーバを自動でhttps化してくれるコンテナで、nginxとlet’s encryptを内包しています。DNS登録されているドメインなら実際に証明書を取得し、ローカルの場合はオレオレ証明書に切り替えてくれます(ブラウザの警告は出てしまいますが)。
チュートリアルにはwordpressコンテナとの接続方法が記載されていますが、今回は一度構築したnginx+php-fpmをhttps化します。

設定ファイル

前回の記事で作成した docker-compose.yml がベースになっています。

docker-compose.yml

最終的にこうなります。 php-fpm , db , mailhog は一切変更が無いので、ここでは触れません。

default.conf

nginxの設定ファイルです。こちらも最終的な内容になります。

php-fpmDockerfile は前回から変更ありませんので省略しています。

説明

docker-compose.yml

https-portalの記述部分を抜粋しています。

  • image:
    現在公開されているのが1系なので、その最新版が入るようにします。
  • ports:
    httpの80番およびhttpsの443番はhttps-portalのコンテナに含まれるnginxがプロキシとなって受けて、php-fpmと連携しているnginxに転送します。
  • DOMAINS:
    どのドメインでアクセスされたら、どのdockerコンテナに転送するかを記述します。左側がドメイン、右側がコンテナ名(この場合はweb)で、80番ポートはhttps-portalで使用しているので任意の別ポートを指定します。
  • STAGE:
    local/staging/production の3種類を指定できます。
    意味はそれぞれ見ての通りで、 staging/production はオンラインのサーバですから実際にlet’s encryptが証明書を発行します。ドメインがDNSに登録されている必要があります。
    local のみオレオレ証明書になるため、ブラウザの警告が出ます。
  • volumes:
    コンテナ内の /var/lib/https-portal に設置される証明書をマウントしています。ホスト側にマウントしないと証明書ファイルが永続化できず、コンテナ起動の度に証明書を発行することになってしまいます。
    ローカルのオレオレ証明書なら問題ありませんが、ステージングや本番で実際に証明書を発行する場合、毎回証明書を発行していると回数制限に引っかかってしまいますので、きちんと永続化しましょう。
  • ports(web):
    https-portalで転送設定したポートで待ち受けるようにします。この場合は8000番ですね。何番でも構いませんが、他のサービスと被らないようにしてください。

default.conf

こちらもhttps-portalに対応して、下記の一箇所だけ書き換えています。
docker-compose.ymlで指定したポート番号をlistenするようにします。

ビルドして実行

ここまで設定したら、あとは docker-compose build && docker-compose up -d を実行するのみです。

接続確認

ローカル環境の場合は docker-compose.ymlhttps-portal.DOMAINS 、および default.confserver_name に記述したドメインを /etc/hosts に忘れず追記しましょう。

さいごに

let’s encryptそのものだけでも便利な代物ですが、dockerコンテナとして動いてくれると一層便利ですね。コンテナ内で定期的に証明書の再取得までしてくれるので、cron設定すら不要になります。

おすすめ書籍

Docker/Kubernetes 実践コンテナ開発入門 Docker実践ガイド 第2版 (impress top gear)

blog-page_footer_336




blog-page_footer_336




-Server
-

執筆者:


comment

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

CAPTCHA


関連記事

CentOS7でwebサーバの初期設定

1 はじめに2 設定内容3 必要なパッケージをインストール3.1 まずはカーネルその他諸々アップデート3.2 dnf4 SSH設定4.1 ユーザー作成・設定4.2 ローカル側で鍵作成4.3 サーバにア ...

MySQL 5.7 オプティマイザの改善〜UNION ALL〜

1 はじめに2 「UNION」と「UNION ALL」の違い3 MySQL 5.7での「UNION ALL」の改善とは4 MySQL 5.7での実行計画4.1 UNION ALL実行計画4.2 UNI ...

aws

AWS App RunnerでWebサーバをデプロイしてみる

1 はじめに1.1 今回の記事で行うこと2 AWS App Runnerとは3 App Runnerでコンテナをデプロイする3.1 ステップ1「ソースおよびデプロイ」3.1.1 ソースの設定3.1.2 ...

Docker上でTensorFlowのチュートリアルをやってみた

1 はじめに1.1 環境2 TensorFlowのコンテナを起動する3 チュートリアルをやってみた3.1 ソースコード4 さいごに はじめに こんにちは、最近個人的な勉強でPython、ディープラーニ ...

aws

Amazon EC2を使ってみる

1 はじめに2 事前準備2.1 ルートアカウントのMFAを有効化2.2 個々のIAMユーザの作成(及びグループの作成)2.3 IAMユーザのMFAを有効化2.4 IAMパスワードポリシーの適用3 EC ...

フォロー

blog-page_side_responsive

2019年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。