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アプリ)を使用する
手順
- dockerをインストールする ※関連リンクを参照
- docker-composeをインストールする ※関連リンクを参照
- docker-compose.ymlを作成する
- docker-composeでコンテナを起動する
- VirtualBoxのネットワーク設定を行う
- ブラウザからHTTPSで接続する
docker-compose.ymlを作成する
CentOS7上の適当なディレクトリに_docker-compose.yml_を作成してください。
※今回は /var/lib/docker 直下にファイル作成しました
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化したい場合に手軽に出来て良さそうです。
関連リンク
以下、環境構築の際に参考にしたサイトです