はじめに
Dockerを用いて気象・海象データ解析向けのRstudio serverを構築します.
実行環境
OS:macOS Catalina version 10.15.3
docker: docker Desktop for Mac / Version 2.2.0.5 (43884) / Channel Stable
Dockerイメージとライブラリ
DockerイメージにはGIS関連のRパッケージが充実しているrocker/geospatial
をチョイスし,これを基にして気象・海象データの代表的なファイル形式であるBUFR, GRIB1/2およびNetCDFをハンドリングするためのライブラリを併せて構築します.
- Dockerイメージ
- rocker/geospatial
- Dockerイメージの中で構築するもの
- Rのパッケージ(data.table, lubridate,stars, metRなどお好みで)
- libecbufr:BUFRのハンドリング
- wgrib:GRIB1のハンドリング
- wgrib2:GRIB2のハンドリング
- ncl (NCAR command language):GRIB1/2,HDF5,NetCDF等のハンドリング
- cdo (climate data operators):GRIB1/2,HDF5,NetCDF等のハンドリング
手順
任意のディレクトリ~/Desktop/docker-compose/rstudio
にdocker-compose.yml
とdockerfile
を作ります.
% mkdir -p ~/Desktop/docker-compose/rstudio
% cd ~/Desktop/docker-compose/rstudio
% touch docker-compose.yml dockerfile
次にdocker-compose.yml
とdockerfile
を編集します.
version: '3'
services:
server:
build:
context: .
dockerfile: dockerfile
volumes:
- ".:/home/rstudio/work"
ports:
- "8787:8787"
restart: always
tty: true
stdin_open: true
environment:
- ROOT=TRUE
- USERID=rstudio
- PASSWORD=PASSWORD
イメージ内にはinstall.package
でRのパッケージ,apt-get install
でcdo
とncl
をインストールします.libecbufr
についてはdpkg
,wgrib
とwgrib2
についてはmake
(こちらを参考にさせていただきました)でインストールをしています.
# Docker image
FROM rocker/geospatial
# install R packages
RUN R -e "install.packages(c('data.table','lubridate', 'stars', 'metR'))"
# install libraries
RUN apt-get update
RUN apt-get install -y wget \
build-essential \
gfortran \
zlib1g-dev \
cdo \
ncl-ncarg
ENV CC gcc
ENV FC gfortran
RUN cd ~ \
&& wget https://launchpad.net/libecbufr/0.8.7/0.8.7/+download/libecbufr_0.8.7_amd64_r335_bionic64.deb \
&& dpkg -i ./libecbufr_0.8.7_amd64_r335_bionic64.deb
RUN cd ~ \
&& mkdir wgrib \
&& cd ~/wgrib/ \
&& wget ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib/wgrib.tar \
&& tar xvf wgrib.tar \
&& make \
&& cp wgrib /usr/local/bin/wgrib
RUN cd ~ \
&& wget https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz \
&& tar xvzf wgrib2.tgz \
&& cd ~/grib2/ \
&& make \
&& cp wgrib2/wgrib2 /usr/local/bin/wgrib2
そして~/Desktop/docker-compose/rstudio
で以下のコマンドを実行します.一連の処理が終了するまでしばらく時間がかかります.
% cd ~/Desktop/docker-compose/rstudio
% docker-compose up -d --build
処理が終了するとコンテナが起動しています.
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
XXXXXXXXXXXX rstudio_server "/init" About a minute ago Up About a minute 0.0.0.0:8787->8787/tcp rstudio_server_1
上記のように表示されたことを確認し,ブラウザでlocalhost:8787
を検索してRstudio serverが表示されていれば成功です.