#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
}}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS