在Docker中安装NCL

目录

最近为 sokort 项目封装 Docker 镜像,需要在镜像中安装 NCL 环境。 使用的基础镜像 (jupyter/scipy-notebookcontinuumio/miniconda) 属于 debian buster 系列,安装的 NCL 版本较高,绘图脚本访问 GRAPES 系列模式 GRIB2 数据会出错,需要安装业务系统使用的 NCL 6.4.0 版本。 官网下载的预编译包依赖 libgfortran3 库,不能直接使用 apt 安装,需要进行额外配置。

下面介绍如何在 Ubuntu 20.04 和 Debian buster 的 Docker 镜像中安装 NCL 6.4.0 版本。

准备

从官方渠道下载 NCL 预编译包。本文下载的软件包是

ncl_ncarg-6.4.0-Debian8.6_64bit_nodap_gnu492.tar.gz

Ubuntu 20.04 (jupyter/scipy-notebook)

准备 apt 源文件 sources.list,本文使用 CMA 镜像站加速。 注意添加 Ubuntu 18.04 (bionic) 源。

deb http://mirrors.cma.cn/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.cma.cn/ubuntu/ focal-updates main restricted universe multiversemultiverse
deb http://mirrors.cma.cn/ubuntu/ focal-backports main restricted universe multiverse

deb http://mirrors.cma.cn/ubuntu/ bionic main universe

Dockerfile 文件中覆盖 /etc/apt/sources.list 并安装 g++-6libgfortran3

COPY sources.list /etc/apt/sources.list
RUN apt-get update -y && apt-get install -y g++-6 && \
    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 6 && \
    apt-get install libgfortran3

拷贝 NCL 预编译包并解压缩

COPY ncl_ncarg-6.4.0-Debian8.6_64bit_nodap_gnu492.tar.gz /srv/ncl/ncl.tar.gz
RUN cd /srv/ncl && tar zxf ncl.tar.gz && rm -rf ncl.tar.gz

设置 NCL 环境变量 NCARG_ROOT,并修改 PATH

ENV NCARG_ROOT="/srv/ncl"
ENV PATH="/srv/ncl/bin:${PATH}"

经过以上配置,ncl 可执行程序在生成的镜像中可以直接运行。

Debian buster (continuumio/miniconda)

与 Ubuntu 类似。

准备 apt 源文件 sources.list。注意添加 stretch 源。

deb http://mirrors.cma.cn/debian/ buster main contrib non-free
deb http://mirrors.cma.cn/debian/ buster-updates main contrib non-free
deb http://mirrors.cma.cn/debian/ buster-backports main contrib non-free
deb http://mirrors.cma.cn/debian-security buster/updates main contrib non-free

deb http://mirrors.cma.cn/debian stretch main contrib non-free

Dockerfile 文件中覆盖 /etc/apt/sources.list 并安装 g++-6fontconfiglibgfortran3

COPY sources.list /etc/apt/sources.list
RUN apt-get update -y && apt-get install -y gcc-6/stretch fontconfig \
    && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 6 \
    && apt-get install -y libgfortran3/stretch

其余部分与 Ubuntu 相同。

参考

在 Docker 中使用 Anaconda

查看 Dockerfile 请访问 sokort 项目:

https://github.com/nwpc-oper/sokort