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


関連記事

laravel logo

Laravel Cashierでサブスクリプションを実装する

1 はじめに2 Stripeの準備3 Laravel Cachierの初期設定3.1 インストール3.2 APIキーの設定3.3 Userモデルへの実装4 支払い方法の登録4.1 支払い方法の登録5 ...

mkcertで簡単にオレオレ証明書を発行する

1 はじめに2 前提3 mkcert3.1 概要3.2 インストール3.3 証明書作成3.4 証明書設置と設定3.5 接続確認4 さいごに5 おすすめ書籍 はじめに ローカルのwebサーバにhttps ...

同じレコードがないときだけインサートする!

はじめに あるアイテムを持っていない人だけ、別のアイテムをあげたい! もしくはその逆で、あるアイテムを持っている人に追加でアイテムをあげたい! そういうことってないでしょうか? 先日、僕がそのような状 ...

DockerでRails + Vue.jsの環境を作ってみる

1 はじめに1.1 前回までのあらすじ1.2 今回の趣旨1.3 環境2 MySQLのUTF-8対応3 Node.jsをRubyコンテナに組み込む4 Webpackerを使用してVue.jsをインストー ...

aws

AWS LambdaとSQSでキューを処理する

1 はじめに1.1 今回紹介する内容2 Amazon SQSとは3 実際に動かしてみる3.1 SQSでキューを作成する3.2 LambdaでMessage送信関数を作成する3.2.1 sendMess ...

フォロー

blog-page_side_responsive

2019年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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