Dockerを使ってHTTPS環境を構築


Dockerを使ってHTTPS環境を構築

Dockerを使ってHTTPS環境を構築出来ないかと調べていたらHTTPS-PORTALという便利なものがあったので、試しにローカルでHTTPS接続できる環境を構築してみました。

HTTPS-PORTALとは?

HTTPS-PORTAL is a fully automated HTTPS server powered by Nginx, Let's Encrypt and Docker. By using it, you can run any existing web application over HTTPS, with only one extra line of configuration.

The SSL certificates are obtained, and renewed from Let's Encrypt automatically.

要するに自動でHTTPSサーバを作ってくれるDockerコンテナです。

前提

VirtualBox(仮想OS)に以下の環境を構築。

  • OS: CentOS7
  • Docker: v19.03.10
  • Docker-compose: v1.25.25

やること

ゲストOSのdocker上に起動したMetabaseにホストOSのブラウザからHTTPSで接続する
※今回はサンプルとしてMetabase(データ分析用のWebアプリ)を使用する

手順

  1. dockerをインストールする ※関連リンクを参照
  2. docker-composeをインストールする ※関連リンクを参照
  3. docker-compose.ymlを作成する
  4. docker-composeでコンテナを起動する
  5. VirtualBoxのネットワーク設定を行う
  6. ブラウザからHTTPSで接続する

docker-compose.ymlを作成する

CentOS7上の適当なディレクトリにdocker-compose.ymlを作成してください。
※今回は /var/lib/docker 直下にファイル作成しました

docker-compose.yml
https-portal:
  image: steveltn/https-portal:1
  ports:
    - '80:80'
    - '443:443'
  links:
    - metabase
  restart: always
  environment:
    STAGE: local
    DOMAINS: 'localhost -> http://metabase:3000'
metabase:
  image: metabase/metabase
  volumes:
    - ~/metabase-data:/metabase-data
  environment:
    - MB_DB_FILE=/metabase-data/metabase.db

https-portalを経由してmetabaseに接続するようなイメージです。
設定内容は以下の情報を元にしています。

docker-composeでコンテナを起動する

dokcer-compose.ymlのあるディレクトリにて以下のコマンドを実行してください。

# docker-composeでコンテナを起動
docker-compose up -d

以下のコマンドでhttps-portalとmetabaseのコンテナが起動していることを確認できます。

# dockerの起動しているコンテナを確認
docker ps

コンテナを停止したい場合は以下のコマンドです。

# docker-composeでコンテナを停止
docker-compose stop

VirtualBoxのネットワーク設定を行う

ホストOSのブラウザからゲストOSのWebアプリに接続する為にVirtualBoxの設定をします。
ネットワーク設定にて、NATでホストOSの80, 443ポートをゲストOSの80, 443にフォワード設定します。


ブラウザからHTTPSで接続する

ブラウザにて https://localhost を表示する

※オレオレ証明書なので上記の警告画面がでます。

以下のMetabaseの初期画面が表示されていれば成功です。

あとがき

今回はお試しということでローカル用に環境構築してみました。
(未検証ですが)設定を切り替えればLet's Encryptから取得した証明書を使うようなので社内ツールなどをHTTPS化したい場合に手軽に出来て良さそうです。

関連リンク

以下、環境構築の際に参考にしたサイトです