ShinyアプリをDockerでhttps化する

公開中の Shiny アプリ 「確率分布Viewer」 を、この度 https 化しました。 新しい URL はこちらです。

https://statdist.ksmzn.com/

ドメインは設定済みの前提で、そのやり方を備忘録として記載します。

Dockerの用意

まず、Shiny を Docker で起動できるようにする必要があります。 私はもともと rocker/shiny イメージを使用して、本番環境にDockerを採用していました。

そのあたりは過去の記事をご参照ください。

ksmzn.hatenablog.com

https-portal を使う

Docker アプリの https 化には、 https-portal が便利です。 https-portal は、証明書周りの手続きを全て自動化してくれる超凄い Docker イメージです。 公式ページの設定からほとんど変えなくても、https 化できてしまったので超オススメです。

詳しい使い方は GitHub および このあたりの記事 をご参照ください。

github.com

以下、私の設定の備忘録です。

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/shiny3838 ポートを使用しているため、DOMAINS にもポートを記載する必要があるということです。

DockerComposeの実行

準備ができましたら、本番環境のサーバに対し、

docker-compose build
docker-compose up -d

と実行しましょう。

しばらく待てば、無事 https 化完了しているはずです。