前回、Docker で Rstudio を起動する記事を書きました。そのままでも問題ないのですが、Docker run する際に、毎回長いコードを書くのも、覚えるのも、大変です。また、将来的に RStudio Server 以外にも色々なコンテナを併用したい場合がでてくるかもしれません。そのようなときは Docker-compose が役に立ちます。
docker-compose.ymlを作成する
前回作成したDockerfileと同じ場所に、docker-compose.ymlというファイルを作成し、エディタで編集をしていきます。今回は、前回と同じようにDropbox > docker 上で作業をします。(例:(Mac) C:\Users\user\Dropbox\docker 、(Windows)D:\Dropbox\R\docker)
前回は、docker buildとdocker runの際に
docker build -t geo:geospatial .
Code language: CSS (css)
docker run -p 8787:8787 -v C:\Users\user\Dropbox\R\:/home/rstudio -d geo:geospatial
Code language: JavaScript (javascript)
と書きましたが、これを docker-compose.yml上で設定すると、下記のようになります。
version: '3'
services:
rstudio:
build: .
image: geo:geospatial
container_name: geo
ports:
- 8787:8787
environment:
TZ: Asia/Tokyo
volumes:
- ../R:/home/rstudio
tty: true
stdin_open: true
Code language: JavaScript (javascript)
それぞれコロン(:)やダッシュ(-)のあとには半角スペースを入れるのを忘れないようにしてください。例えば、version: ‘3’は、version:と’3’の間に半角スペースがあります。build: .などもコンマ(.)の前に半角スペースが必要です。これは書式のルールとして従ってください。
また、今回はvolumesは相対パスで指定しています。C:\Users\user\Dropbox\R というフォルダをRstudioのホームディレクトリに指定したい場合は、今 C:\Users\user\Dropbox\dockerというフォルダにいるので、.. でひとつ上の階層にあがり(C:\Users\user\Dropbox\)、それから /Rのディレクトリを指定しています。
相対パスを指定することで、使っているマシンの環境に依存しないコードになりました。これで MacでもWindowsでも同じdocker-compose.ymlファイルで管理が可能になりました。
docker-compose up -d でbuildする
Dockerの際と一緒です。(Macなら)Terminalを起動。Windowsであれば TeraTermやWindows Terminalを使用してください。Dockerfileがおいてある場所に移動します。
# 自分(Mac)の場合 /Users/user から /Users/user/Dropbox/docker へ移動
cd Dropbox
cd docker
Code language: PHP (php)
Dockerfileおよびdocker-compose.ymlがおいてある場所に移動ししたら、今回はdocker buildやdocker runの代わりにdocker-compose up -dと入力・実行します。これだけです。
# /Users/user/Dropbox/docker
docker-compose up -d
Code language: PHP (php)
エラーが出る場合は、先程の半角スペースを入れ忘れていないか、まずは確認してみてください。問題なければ http://localhost:8787 で前回の設定と同じように無事にrstudioに接続できると思います。
もし
ERROR: You must set a unique PASSWORD first!! e.g. run with:
docker run -e PASSWORD=<YOUR_PASS> -p 8787:8787 rocker/geospatial
Code language: HTML, XML (xml)
といったようなエラーが出る場合は、パスワードを別に設定する必要があります。先程の.ymlファイルに environment オプションを追加します
version: '3'
services:
rstudio:
build: .
image: geo:geospatial
container_name: geo
ports:
- 8787:8787
environment:
PASSWORD: YOUR_PASS
TZ: Asia/Tokyo
volumes:
- ../R:/home/rstudio
tty: true
stdin_open: true
Code language: JavaScript (javascript)
YOUR_PASS の部分を任意のパスワードに変更してください。
細かい部分は省いていますが、イメージとしてはこのような感じです。
今回の記事は米国AI開発者かめれおんさん((かめ@米国🇺🇸データサイエンティスト/コミュニティ”DataScienceHub”やってますさん (@usdatascientist) / Twitter. Twitter. Accessed February 21, 2021. https://twitter.com/usdatascientist))の Docker講座((米国AI開発者がゼロから教えるDocker講座. Udemy. Accessed February 21, 2021. https://www.udemy.com/course/aidocker/)) の内容を参考にしました。Docker講座の中では、Webアプリ(Rails)環境開発のために、docker-composeを使っていましたが、今回はその内容を参考にRstuidoの環境設定を行いました。
少し脱線しますが、以前はアプリ開発に Monaca((Monaca – すべての人にアプリ開発を. Accessed February 21, 2021. https://ja.monaca.io/))を使っていました。こちらも使いやすかったのですが、自前でDocker環境下でWebアプリ開発環境を作りたいという思いもあります。ぼちぼちと勉強・準備を続けていきたいと思います。
ピンバック: Zotero で citation keys を設定する ( zotero-better-bibtex ) - shoei05
ピンバック: Docker環境 Rstudio で文字化け回避、Host/Container間のファイルシステムの共有に関する覚書 - shoei05
ピンバック: Rstudio のプロジェクトフォルダにある .git と .Rproj.user を Dropbox 非同期に設定する - shoei05
ピンバック: Docker で Rstudio ver 1.4 をインストールする - shoei05