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-fpm の Dockerfile は前回から変更ありませんので省略しています。

説明

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.yml の https-portal.DOMAINS 、および default.conf の server_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


関連記事

aws

LocalStackのLambdaをホットリロードさせる

はじめに 前回に引き続きAWS Lambdaについて取り扱っていきます。今回はLocakStackでホットリロードさせるための設定について紹介します。 全体の流れ まず初めに、どのようにホットリロード ...

WordPressとRailsアプリケーションを相乗りさせた時の話

  はじめに 先日、現在開発中のアプリケーションのステージング環境の構築を行ないました。 ステージング環境はこのブログのサーバと相乗りさせています。 今回はその際に行ったNginxの設定とS ...

aws

ECSとCWLでのアラームの設定

はじめに ECS上のタスクで特定の文字列をログに出力した際にCloudWatch Logsでアラームとして表示する方法を紹介します。 全体の流れ やることは以下の通りです。 CloudWatch Lo ...

DockerでRuby2.5、Rails5.2betaの環境をつくる【Compose file v3】

はじめに 明けましておめでとうございます。 年末年始休みに、少しRuby 2.5.0、Rails 5.2 beta2を触りました。 その際にDockerを使って環境を作成したので、そちらに関して記載し ...

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

はじめに Amazon RDSのMySQL 5.7で開発を行うことになりました。そこで、少しですがMySQL 5.7の機能を調べる機会がありましたので、今回は「UNION ALL」に関してのオプティマ ...

フォロー

blog-page_side_responsive

2019年3月
日 月 火 水 木 金 土
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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