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


関連記事

InnoDBでauto_incrementの値が戻る?

はじめに 花粉症が辛い季節になりました。 花粉症も困りますが、本日はMySQL関連で困って調べたことをまとめたいと思います。 タイトルですが、InnoDBだとDBを再起動した際にauto_increm ...

Google

【Google Invisible reCAPTCHA】Railsサイトにキャプチャ導入

1 はじめに2 reCAPTCHAとは3 Site keyとSecret keyの取得4 Rails gemの導入5 サイトへの組み込み6 さいごに はじめに こんにちは、最近休みなく仕事をいただいて ...

RubyでOSM Nominatimを使ってみた

1 はじめに2 導入3 検索3.1 建物名による検索の実装例3.2 住所による検索の実装例4 リバースジオコーディング4.1 実装例5 住所の整形6 Open Street Map Nominatim ...

CentOS7でwebサーバの初期設定

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

Python(bottle)をApacheで動かす

1 はじめに1.1 環境2 サーバーの立ち上げ3 Pythonのインストール3.1 IUS Community Project の yum リポジトリ3.2 インストール4 Apacheのインストール ...

フォロー

follow us in feedly

blog-page_side_responsive

2019年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31 

アプリ情報

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