ShinyアプリをDockerでhttps化する
公開中の Shiny アプリ 「確率分布Viewer」 を、この度 https 化しました。 新しい URL はこちらです。
ドメインは設定済みの前提で、そのやり方を備忘録として記載します。
Dockerの用意
まず、Shiny を Docker で起動できるようにする必要があります。 私はもともと rocker/shiny イメージを使用して、本番環境にDockerを採用していました。
そのあたりは過去の記事をご参照ください。
https-portal を使う
Docker アプリの https 化には、 https-portal が便利です。
https-portal は、証明書周りの手続きを全て自動化してくれる超凄い Docker イメージです。
公式ページの設定からほとんど変えなくても、https 化できてしまったので超オススメです。
詳しい使い方は GitHub および このあたりの記事 をご参照ください。
以下、私の設定の備忘録です。
Shinyアプリと https-portal を組み合わせるために、docker-compose を使います。
docker-compose.yml に、以下のように記載してください。
https-portal:
image: steveltn/https-portal:1
ports:
- '80:80'
- '443:443'
links:
- yourapp
restart: always
environment:
DOMAINS: 'yourdomain.com -> http://yourapp:3838' # <- rockerを使う場合は3838が必要!
# STAGE: 'production' # <- 本番環境ではコメントアウトを外す
yourapp:
build: . # Shinyアプリ用のDockerfile
基本的には、公式ページの設定とほとんど同じです。
唯一注意することは、rocker/shiny が 3838 ポートを使用しているため、DOMAINS にもポートを記載する必要があるということです。
DockerComposeの実行
準備ができましたら、本番環境のサーバに対し、
docker-compose build docker-compose up -d
と実行しましょう。
しばらく待てば、無事 https 化完了しているはずです。