【備忘録】RユーザのためのDocker環境「Rocker」でパスワードの設定が必要になった
要約
- rockerプロジェクトの各種Dockerfileの変更があり、RStudio Serverへはデフォルトのパスワードでのログインができなくなった
docker-compose.yml
では環境変数の設定が可能で、外部ファイル.env
にパスワードを記述した
rockerプロジェクトのRStudio Serverにログインするためのパスワードが変更
職人の朝は docker pull rocker/rstudio:X.X.X
で始まる...。わけではないですが、月曜日には利用しているdockerイメージの更新が慣例となっています。
そして今週もイメージを更新し、コンテナを立ち上げたのですが、なにやら次のメッセージが出て、起動に失敗している様子。
はて?先週はこんなことにはならなかったけどなんでだろうと思い、GitHub issuesをチェックしたらまさに同じ現象を報告している人がいました。
rockerの各種イメージファイルでは、RStudio Serverのデフォルトのユーザ名とパスワードに使われている文字列がありました。セキュリティ面を考慮するとパスワードを個々に設定する様に変更するのは良いと思うのですが、日頃の行いが怠惰なせいで朝からこの対応に追われることになりました。
⚠️ rockerプロジェクトについては公式ページか id:yutannihilation さんの下記の記事をご覧ください。
docker-composeへの変数指定
rockerプロジェクトのイメージで、RStudio Serverを使う場合に求められるログイン用パスワードは、dockerのenvironmentオプションを使い、下記のように指定できます。
docker run -d -p 8787:8787 -e PASSWORD=<パスワード> rocker/rstudio
ですが、私はrockerの起動はdocker-compose.yml
を用意して実行するようにしており、docker-compose.yml
でのenvironmentの記述をすることに。結果、docker-compose.yml
にenvironment
フィールドを追加して、環境変数としてパスワードを与えるようにしました。
ports: - "8787:8787" environment: PASSWORD: ${PASSWORD}
また、Dockerfile
もdocker-compose.yml
もバージョン管理していたので、パスワードの記述をこれらのファイルに直接記述するのは避けたいと思い、.env
ファイルを用意し、docker-compose.yml
から環境変数として呼び出す運用にしています。
プロジェクトごとに同じ設定をしなくてはいけないのが面倒なのと、これまでデフォルトのパスワードを使い回していたので指が勝手にタイプしてしまうのが問題ですが、これで問題は解決しました。
バージョン管理からの除外と、パッケージ環境であればビルドにも含めない指定をするのを忘れずに行いましょう。
usethis::use_git_ignore(".env") usethis::use_build_ignore(".env")
(この記事の中ではdocker-compose.yml
を使っていません。ちょっと内容が古いです。)
rockerプロジェクトの2つのリポジトリ
翌日、 id:yutannihilation さんの英語アカウントでこの問題に関するつぶやきをしているのを見ました。
Anyone knows the context why #RStudio Docker image (rocker/rstudio) now requires password? I haven't seen any announcement so far... (+1 for making password mandatory itself, though!) #rstats https://t.co/g2EN2ACxXI
— Hiroaki Yutani (@yutannihilat_en) 2018年8月28日
なるほど。このコミットでパスワード設定の変更をしていたのか。勉強になりました。今度からはこっちのリポジトリの変更も追うようにします(違いがよくわかっていない)。
20180930追記
認証なしでログインできる方法が書いてありました。セキュリティ面への考慮はともかく、手元でサクッと試すには環境変数DISABLE_AUTH
を有効にすると良いかもしれません。
docker run --rm \ -p 127.0.0.1:8787:8787 \ -e DISABLE_AUTH=true \ rocker/rstudio