#author("2020-09-28T20:44:35+09:00","default:nobuoki","nobuoki") #author("2020-09-28T20:46:21+09:00","default:nobuoki","nobuoki") * はじめに [#ie8b481c] コンテナを利用して手っ取り早くMeCab入りrstudioを立ち上げます - イメージは [[tokyor/rstudio>https://hub.docker.com/r/tokyor/rstudio]] を利用 - コンテナ起動は podman-compose を使う(試してないけど docker-compose でも大丈夫なはず) -- entrypoint を利用して mecab をインストール * 起動例 [#p49b9d28] fedora32 で podman を使いました podman-compose は pip3 install -g podman-compose で入ります コンテナを立ち上げる #prism(bash){{{ # docker-compose.yml をダウンロード $ wget -O docker-compose.yml https://gist.githubusercontent.com/kemasoft-gist/e24067d1895d0179d8a0117b06523fcd/raw --2020-09-28 19:50:34-- https://gist.githubusercontent.com/kemasoft-gist/e24067d1895d0179d8a0117b06523fcd/raw gist.githubusercontent.com (gist.githubusercontent.com) をDNSに問いあわせています... 151.101.108.133 gist.githubusercontent.com (gist.githubusercontent.com)|151.101.108.133|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 502 [text/plain] `docker-compose.yml' に保存中 docker-compose.yml 100%[==============================================================>] 502 --.-KB/s 時間 0s 2020-09-28 19:50:35 (3.47 MB/s) - `docker-compose.yml' へ保存完了 [502/502] # コンテナ(というかpod)を起動 $ podman-compose up -d podman pod create --name=tmp --share net -p 8787:8787 1d24f1d9df275e489f80ab3afd85e693a9ca01210234671acc2450696aa85499 0 podman run --name=r-studio -d --pod=rstudio -l io.podman.compose.config-hash=123 -l io.podman.compose.project=rstudio -l io.podman.compose.version=0.0.1 -l com.docker.compose.container-number=1 -l com.docker.compose.service=rstudio-sv --network host --mount type=bind,source=/home/nobuoki/work,destination=/home/rstudio/work --add-host rstudio-sv:127.0.0.1 --add-host r-studio:127.0.0.1 --entrypoint ["sh", "-c", "apt update && apt -y install mecab libmecab-dev mecab-ipadic-utf8 && ln -sf /usr/lib/x86_64-linux-gnu/libmecab.so.2 /usr/lib/x86_64-linux-gnu/libmecab.so && Rscript -e \"install.packages('RMeCab',repos='http://rmecab.jp/R')\" && exec /init"] tokyor/rstudio 5020b41e6563bb116201cdcf0c68605b5e1cd93d4e34f4bc88cb216a59a771b6 0 }}} 無事コンテナが立ち上がったら、ブラウザで http://母艦のIP:8787/ でアクセス、 id/pw = rstudio/rstudio でセッションを開始し、動作確認します #prism(bash){{{ # コンソールに1行叩き込む library(RMeCab); RMeCabC("すもももももももものうち") [[1]] 名詞 "すもも" [[2]] 助詞 "も" [[3]] 名詞 "もも" [[4]] 助詞 "も" [[5]] 名詞 "もも" [[6]] 助詞 "の" [[7]] 名詞 "うち" > }}} * docker-compose.yml [#taf1db99] ポイント - entrypoint 部分はヒアドキュメントにしたかったのですが、podman-compose だとうまく行かないのでベタ書きです -- うまくいかない理由は多分、[[ここ>https://github.com/containers/podman-compose/issues/115]]とか[[ここ>https://github.com/containers/podman-compose/issues/129]]とか[[ここ>https://github.com/containers/podman-compose/pull/97]]に書いてあるせいだと思います -- 単に mecab をインストールするだけだと install.packages ("RMeCab", repos = "http://rmecab.jp/R") がコケるので、symlinkを貼ってます --- 参考:[[UbuntuにRMecabをインストールする | あメログ>https://amamemolog.blogspot.com/2019/08/ubunturmecab.html]] 趣味の部分 - container_name でコンテナ名を固定しています -- podman exec -it r-studio bash とかするときに便利なので - 任意のボリュームを、コンテナの /home/rstudio 配下にリンクしておくと便利です -- ここでは ~/work:/home/rstudio/work しています #gist(kemasoft-gist/e24067d1895d0179d8a0117b06523fcd) * その他 [#x66b1dd9] [[ymattu/mecab-d - Docker Hub>https://hub.docker.com/r/ymattu/mecab-d]] を使うと、もっと簡単です(感謝) 詳しくは [[Docker で RStudio Server + MeCab + tidyverse (+ 日本語)>https://ymattu.github.io/TokyoR60/LT.html]] を参照 認証不要にすることも出来ます docker-compose.yml #pre{{{ version: '2' services: rstudio-sv: image: ymattu/mecab-d container_name: r-studio restart: always network_mode: "host" environment: - DISABLE_AUTH=true ports: - 8787:8787 volumes: - ~/work:/home/rstudio/work }}}