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 化完了しているはずです。