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