renv와 docker로 R 분석 환경 구축
2021/10/17 추가
여러가지 재검토한 적이 있어, 새로운 기사 를 썼다.
개요
R을 사용할 필요에 육박해, 나름대로 환경을 준비했을 때의 메모. 이하의 조건을 만족하는 환경을 목표로 한다.
1. ローカルの環境を汚したくない
2. Rのバージョンを明確に指定可能、なおかつ適宜変更可能
3. 利用するパッケージをプロジェクトごとに管理可能(pythonにおけるvenvのイメージ)
4. 複数のプロジェクトで同じパッケージを利用する際、一度のインストールで済む
1,2
는 사용하고 싶은 버젼의 R가 인스톨 된 docker 이미지를 준비하면 해결. 3
renv라는 R 패키지를 설치하는 것이 편리합니다. 4
는 docker run
때 적절한 옵션을 지정한다.환경
내 환경은 다음과 같습니다. docker를 이용하기 때문에 다른 환경에서도 대체로 문제 없을 것.
docker 이미지 준비
이하, 필요한 파일의 내용에 대해 해설한다 1 우선은 Dockerfile.
Dockerfile
FROM r-base:4.0.0
COPY ./entrypoint.sh /
COPY ./init.R /
RUN apt update && \
apt install -y mecab mecab-ipadic-utf8 fonts-ipafont libmecab-dev && \
apt install -y libcurl4-openssl-dev libssl-dev libxml2-dev && \
Rscript /init.R && \
chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
첫 번째 줄의
r-base:4.0.0
는 R의 공식 docker 이미지. 다른 버전이 필요하다면 4.0.0
의 부분을 바꾼다. 사용 예정인 R의 패키지가 의존하는 기능은 apt install
로 인스톨 해 둔다.Rscript
에서 실행하는 init.R의 내용은 다음과 같이 renv를 설치할 뿐입니다.init.R
install.packages("renv")
ENTRYPOINT
로 지정하고 있는 entrypoint.sh의 내용은 이하와 같다./sync라는 디렉토리로 이동하여 R을 시작합니다.#!/bin/bash
cd /sync
R
나머지는 로컬로 빌드해도 좋지만, 나는 Github에 push하면 DockerHub에서 자동으로 빌드되도록 설정하고 있기 때문에 그것을 이용한다. 개인 리보지토리가 아니기 때문에 누구나
docker pull
수 2 .docker 이미지 사용
우선은 프로젝트의 폴더로 이동. docker를 사용할 수 있는 환경이라면, 다음의 커멘드로 R이 기동한다. 말미의 태그로 R의 버젼을 바꿀 수 있도록 그중 준비하고 싶다(아직
latest
밖에 없다).docker run -it --rm -v $(pwd):/sync -v $HOME/.renv:/root/.local/share/renv dr666m1/myr:latest
-v
두 개가 있지만 첫 번째는 현재 디렉토리를 docker 컨테이너와 공유합니다. 둘째는 설치한 R의 패키지의 저장처를, 로컬의 $HOME/.renv
로 지정하고 있다. 이것을 지정해 두는 것으로, 다른 프로젝트에서 같은 패키지를 이용할 때에 쓸데없는 인스톨이 달리지 않는다.renv 사용법에 대한 자세한 설명은 하지 않지만, 첫회는
renv::init()
로 프로젝트의 초기화를 하는 것.내 사용법
에디터는 neovim을 사용하는 경우가 많기 때문에, neoterm을 기동해 이하 3 와 같이 이용하고 있다. 오른쪽 절반에서 코드를 쓰고 왼쪽 절반에서 R을 시작하여 코드를 실행하고 있습니다. 그래프는 png등으로 보존해 보러 가게 되기 때문에 약간 번거롭지만, 지금까지 좋아하는 에디터를 사용할 수 있는 메리트가 크다.
파일은 모두 Github에도 둔다. ↩
우선 태그는 latest. R의 버전마다 태그를 바꾸면 나중에 편리할 것이라고는 생각하고 있다. ↩
shell이 fish이기 때문에
docker run
옵션의 쓰는 방법이, 위에 기재한 것과 약간 다르다. ↩Reference
이 문제에 관하여(renv와 docker로 R 분석 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dr666m1/items/19e4e90e07578631f193텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)