130 lines
4.1 KiB
Docker
130 lines
4.1 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
## CLM5.0
|
|
MAINTAINER "SHUD"
|
|
|
|
WORKDIR /model
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV VERSION_CODENAME=jammy
|
|
|
|
RUN rm /etc/apt/sources.list \
|
|
&& echo "deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ ${VERSION_CODENAME} main restricted universe multiverse" >> /etc/apt/sources.list \
|
|
&& echo "deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ ${VERSION_CODENAME}-updates main restricted universe multiverse" >> /etc/apt/sources.list \
|
|
&& echo "deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ ${VERSION_CODENAME}-backports main restricted universe multiverse" >> /etc/apt/sources.list \
|
|
&& echo "deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ ${VERSION_CODENAME}-security main restricted universe multiverse" >> /etc/apt/sources.list \
|
|
&& echo 'Acquire::https { Verify-Peer "false"; Verify-Host "false"; }' >> /etc/apt/apt.conf.d/tuna.conf
|
|
|
|
# && echo "deb https://cloud.r-project.org/bin/linux/ubuntu cosmic-cran35/" >> /etc/apt/sources.list
|
|
|
|
RUN apt-get update \
|
|
&& apt install -y --no-install-recommends --assume-yes \
|
|
ca-certificates \
|
|
dejagnu \
|
|
sudo libtool \
|
|
vim git git-lfs subversion gfortran cmake \
|
|
libxml2-utils libxml-libxml-perl \
|
|
python3 python3-dev python3-venv python3-pip \
|
|
make m4 \
|
|
libcurl4-openssl-dev liblapack-dev libblas-dev mpich libmpich-dev \
|
|
gnupg wget curl \
|
|
&& apt-get clean
|
|
|
|
RUN python3 -m venv /venv
|
|
|
|
ENV PATH="/venv/bin:${PATH}"
|
|
|
|
ADD pkgs/*.gz /usr/local/src/
|
|
|
|
ARG ZDIR=/usr/local/zlib
|
|
RUN cd /usr/local/src/zlib-1.2.11 \
|
|
&& CC=mpicc ./configure --prefix=${ZDIR} \
|
|
&& make \
|
|
# && make check \
|
|
&& make install \
|
|
&& rm -rf /usr/local/src/zlib-1.2.11
|
|
|
|
ENV CC=mpicc \
|
|
CXX=mpicxx \
|
|
FC=mpif90 \
|
|
F77=mpif90
|
|
|
|
ARG PNDIR=/usr/local/pnetcdf
|
|
RUN cd /usr/local/src/pnetcdf-1.11.0 \
|
|
&& FC=mpif90 MPICC=mpicc CFLAGS="-fPIC -g -O2" \
|
|
./configure --prefix=${PNDIR} --enable-shared --enable-profiling\
|
|
&& make \
|
|
# && make tests \
|
|
# && make check \
|
|
# && make ptests \
|
|
&& make install \
|
|
&& rm -rf /usr/local/src/pnetcdf-1.11.0
|
|
|
|
# Parallel OpenMPI-HDF5-NetCDF stack
|
|
# https://gist.github.com/milancurcic/3a6c1a97a99d291f88cc61dae6621bdf
|
|
ARG H5DIR=/usr/local/hdf5
|
|
RUN cd /usr/local/src/hdf5-1.10.4 \
|
|
&& CC=mpicc FC=mpif90 CFLAGS="-fPIC -w" ./configure --prefix=${H5DIR} \
|
|
--with-zlib=${ZDIR} --enable-parallel --enable-hl \
|
|
&& make \
|
|
# && make check \
|
|
&& make install \
|
|
&& rm -rf /usr/local/src/hdf5-1.10.4
|
|
#--enable-shared --enable-fortran
|
|
|
|
ARG NCDIR=/usr/local/netcdf4
|
|
RUN cd /usr/local/src/netcdf-c-4.6.2 \
|
|
&& CC=mpicc CPPFLAGS="-I${PNDIR}/include -I${H5DIR}/include -I${ZDIR}/include" \
|
|
LDFLAGS="-L${PNDIR}/lib -L${H5DIR}/lib -L${ZDIR}/lib" \
|
|
./configure --prefix=${NCDIR} --enable-parallel-tests \
|
|
&& make \
|
|
# && make check \
|
|
&& make install \
|
|
&& rm -rf /usr/local/src/netcdf-c-4.6.2
|
|
|
|
ARG NFDIR=/usr/local/netcdff4
|
|
RUN cd /usr/local/src/netcdf-fortran-4.4.5 \
|
|
&& CPPFLAGS=-I${NCDIR}/include LDFLAGS=-L${NCDIR}/lib \
|
|
./configure --prefix=${NFDIR} \
|
|
&& make \
|
|
# && make check \
|
|
&& make install \
|
|
&& rm -rf /usr/local/src/netcdf-fortran-4.4.5
|
|
|
|
RUN echo ${NCDIR}/lib > /etc/ld.so.conf.d/netcdf.conf \
|
|
&& echo ${NFDIR}/lib >> /etc/ld.so.conf.d/netcdf.conf \
|
|
&& echo ${ZDIR}/lib >> /etc/ld.so.conf.d/netcdf.conf \
|
|
&& echo ${H5DIR}/lib >> /etc/ld.so.conf.d/netcdf.conf \
|
|
&& echo ${PNDIR}/lib >> /etc/ld.so.conf.d/netcdf.conf \
|
|
&& ldconfig
|
|
|
|
ENV USER=clm
|
|
RUN useradd -m -G adm,sudo -s /bin/bash $USER \
|
|
&& echo "root:root" | chpasswd \
|
|
&& echo "clm:clm" | chpasswd
|
|
|
|
RUN git clone -b release-clm5.0 https://github.com/ESCOMP/CTSM.git ctsm \
|
|
&& cd ctsm && ./manage_externals/checkout_externals \
|
|
&& chown -R clm:clm /model/ctsm \
|
|
&& cd ..
|
|
|
|
RUN mkdir -p /inputdata
|
|
VOLUME ["/inputdata"]
|
|
ENV PATH="/model/ctsm/cime/scripts:${NCDIR}/bin:${PATH}" \
|
|
LANG=C.UTF-8
|
|
|
|
COPY config/*.xml /home/${USER}/.cime/
|
|
COPY config /home/${USER}/cesm/config
|
|
COPY run_CLM50_example01.sh /home/${USER}/cesm/
|
|
|
|
WORKDIR /home/${USER}/cesm
|
|
|
|
RUN chown -R clm:clm /home /home/${USER} /home/${USER}/.cime \
|
|
&& chmod 755 -R /home/${USER}/.cime /home/${USER}
|
|
|
|
RUN chown -R clm:clm /inputdata \
|
|
&& chmod 777 -R /inputdata
|
|
|
|
USER ${USER}
|
|
CMD bash
|