Dockerで開発しているWebアプリのデバッグをHTTPSで行えるようにする

 VisualStudioでDockerサポートのASP.NET Core MVCアプリを作り始めた。

 イマドキWebサイトは全ページHTTPSがめずらしくない。それがSEO上は有利でもあるし、Let'sEncryptという無料で証明書を取得する手段も出てきたのでやらない手はない。
 全ページHTTPSを見越し、開発環境でのデバッグもHTTPSでできるようにしておく。Dockerサポートを有効にしているので、コンテナを一個つけて、VisualStudioのデバッグ設定を一つ行うだけ。

 まずデバッグ用のcomposeファイルを編集する。docker-compose.override.ymlにリバースプロキシをやってくれるコンテナを加える。あとWebアプリコンテナのポートはホストにバインドしておく必要がなくなったので設定を削除する。
docker-compose.override.yml

version: '3'

services:
tetsujin:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80:80"
   ↓
version: '3'


services:
tetsujin:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ssldevenv:
image: matoba/ssldevenv
ports:
- "443:443"
links:
- tetsujin:webapp


追加されたssldevenvというコンテナは、OpenSSLで発行した証明書を入れたもの。中ではNginXがリバースプロキシの役割で動いている。リバースプロキシはwebappという名前で解決されるホストへつながれるようになっている。なのでlinksでWebアプリコンテナの名前認識を変えてつないでいる。
 実際の中身は下記リポジトリを参照。
https://github.com/hMatoba/ssldevenv



 あとはVisualStudioのデバッグ設定を行う。これまではデバッグ実行ごとにブラウザが立ち上がるようになっていたのでこれを切る。




 VisualStudioでデバッグを実行する。コンテナのビルドなどが終わってローカルにデプロイされるのを待つ。




 ブラウザでhttps://localhostへアクセスしてみる。Webアプリへの接続が確認できるはず。




 開発環境でのデバッグをHTTPS接続でできるようにした。Dockerコンテナを使っているので書き換えるところは多くなく楽だったはず。本番環境でもこれと同様に楽に証明書を取得して接続できるコンテナを用意してある。
https://absurd.azurewebsites.net/Article/121


今回のコミット
comment: 0