cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

【備忘録】RユーザのためのDocker環境「Rocker」でパスワードの設定が必要になった

要約

  • rockerプロジェクトの各種Dockerfileの変更があり、RStudio Serverへはデフォルトのパスワードでのログインができなくなった
  • docker-compose.ymlでは環境変数の設定が可能で、外部ファイル.envにパスワードを記述した

rockerプロジェクトのRStudio Serverにログインするためのパスワードが変更

職人の朝は docker pull rocker/rstudio:X.X.X で始まる...。わけではないですが、月曜日には利用しているdockerイメージの更新が慣例となっています。

そして今週もイメージを更新し、コンテナを立ち上げたのですが、なにやら次のメッセージが出て、起動に失敗している様子。

f:id:u_ribo:20180831215922p:plain

はて?先週はこんなことにはならなかったけどなんでだろうと思い、GitHub issuesをチェックしたらまさに同じ現象を報告している人がいました。

github.com

rockerの各種イメージファイルでは、RStudio Serverのデフォルトのユーザ名とパスワードに使われている文字列がありました。セキュリティ面を考慮するとパスワードを個々に設定する様に変更するのは良いと思うのですが、日頃の行いが怠惰なせいで朝からこの対応に追われることになりました。

⚠️ rockerプロジェクトについては公式ページid:yutannihilation さんの下記の記事をご覧ください。

notchained.hatenablog.com

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.ymlenvironmentフィールドを追加して、環境変数としてパスワードを与えるようにしました。

    ports:
      - "8787:8787"
    environment: 
      PASSWORD: ${PASSWORD}

qiita.com

また、Dockerfiledocker-compose.ymlもバージョン管理していたので、パスワードの記述をこれらのファイルに直接記述するのは避けたいと思い、.envファイルを用意し、docker-compose.ymlから環境変数として呼び出す運用にしています。

プロジェクトごとに同じ設定をしなくてはいけないのが面倒なのと、これまでデフォルトのパスワードを使い回していたので指が勝手にタイプしてしまうのが問題ですが、これで問題は解決しました。

バージョン管理からの除外と、パッケージ環境であればビルドにも含めない指定をするのを忘れずに行いましょう。

usethis::use_git_ignore(".env")
usethis::use_build_ignore(".env")

uribo.hatenablog.com

(この記事の中ではdocker-compose.ymlを使っていません。ちょっと内容が古いです。)

rockerプロジェクトの2つのリポジトリ

翌日、 id:yutannihilation さんの英語アカウントでこの問題に関するつぶやきをしているのを見ました。

なるほど。このコミットでパスワード設定の変更をしていたのか。勉強になりました。今度からはこっちのリポジトリの変更も追うようにします(違いがよくわかっていない)。

20180930追記

認証なしでログインできる方法が書いてありました。セキュリティ面への考慮はともかく、手元でサクッと試すには環境変数DISABLE_AUTHを有効にすると良いかもしれません。

docker run --rm \
  -p 127.0.0.1:8787:8787 \
  -e DISABLE_AUTH=true \
  rocker/rstudio