-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.metviewer
More file actions
114 lines (106 loc) · 4.53 KB
/
Copy pathDockerfile.metviewer
File metadata and controls
114 lines (106 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
ARG BASE_REGISTRY=docker.io
ARG BASE_IMAGE=debian
ARG BASE_TAG=12-slim
FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG}
LABEL maintainer="John Halley Gotway <johnhg@ucar.edu>"
#
# Constants
# Original Tomcat Source:
# https://archive.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR_VERSION}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz
#
ENV TOMCAT_MAJOR_VERSION=10
ENV TOMCAT_MINOR_VERSION=1.55
ENV TOMCAT_VERSION=${TOMCAT_MAJOR_VERSION}.${TOMCAT_MINOR_VERSION}
ENV TOMCAT_URL=https://dtcenter.ucar.edu/dfiles/code/METplus/MET/docker_data/apache-tomcat-${TOMCAT_VERSION}.tar.gz
ENV CATALINA_HOME=/opt/tomcat
ENV SQLITE3_URL=https://www.sqlite.org/2025/sqlite-autoconf-3500300.tar.gz
# Expose METviewer port
EXPOSE 8080
ENV PYTHON_VER=3.14.4
WORKDIR /tmp
# - install build-essential, libffi-dev, and libssl-dev for Pip SSL support
# - Install Python packages needed for METplus Analysis Python tools
RUN \
echo "Install system updates" &&\
apt -y update && apt -y upgrade \
&& echo "Install required packages" &&\
apt -y install ant build-essential equivs ghostscript git libffi-dev libssl-dev ksh \
mariadb-server openjdk-17-jdk r-base wget &&\
apt clean \
&& echo "Downloading and installing sqlite3 from ${SQLITE3_URL}" &&\
wget ${SQLITE3_URL} &&\
filename=$(basename ${SQLITE3_URL}) &&\
tar xzf ${filename} &&\
(cd ${filename%%.*} && ./configure && make -j $(nproc) && make install) &&\
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr-local.conf && ldconfig \
&& echo "Create dummy packages to prevent reinstallation of packages with CVEs" &&\
( \
echo 'Package: libsqlite3-0'; \
echo 'Version: 9:9.9.9'; \
echo 'Architecture: amd64'; \
echo 'Maintainer: Dummy Pkg'; \
echo 'Description: Dummy package to satisfy libnss3 dependency with source-built sqlite3'; \
) > /tmp/libsqlite3-0.control && \
equivs-build /tmp/libsqlite3-0.control &&\
dpkg -i libsqlite3-0_9.9.9_amd64.deb \
&& echo "Setup default cran repo" &&\
echo "r <- getOption('repos'); r['CRAN'] <- 'http://cran.us.r-project.org'; options(repos = r);" > ~/.Rprofile \
&& echo "Install required R packages" &&\
Rscript -e "install.packages('boot')" &&\
Rscript -e "install.packages('plotrix')" &&\
Rscript -e "install.packages('gsl')" &&\
Rscript -e "install.packages('data.table')" &&\
Rscript -e "install.packages('verification')" \
&& echo "Install Tomcat" &&\
wget ${TOMCAT_URL} &&\
tar -xvf apache-tomcat-${TOMCAT_VERSION}.tar.gz &&\
rm apache-tomcat*.tar.gz &&\
mv apache-tomcat* ${CATALINA_HOME} &&\
chmod +x ${CATALINA_HOME}/bin/*sh \
&& echo "Install Python from source" &&\
wget https://www.python.org/ftp/python/${PYTHON_VER}/Python-${PYTHON_VER}.tgz &&\
tar xzf Python-${PYTHON_VER}.tgz &&\
(cd Python-${PYTHON_VER} &&\
./configure --enable-optimizations --enable-shared --disable-test-modules \
LDFLAGS="-L/usr/local/lib -Wl,-rpath,/usr/local/lib" &&\
make -j `nproc` &&\
make install) &&\
ln -s /usr/local/bin/python3 /usr/local/bin/python &&\
rm -rf Python-${PYTHON_VER}* \
&& echo "Create a link for python3" &&\
ln -sf /usr/local/bin/python3 /usr/bin/python3 &&\
ln -sf /usr/bin/python3 /usr/bin/python &&\
ln -sf /usr/local/bin/pip3 /usr/bin/pip3 &&\
ln -sf /usr/bin/pip3 /usr/bin/pip \
&& echo "Create dummy python3 package to prevent installation of python3.11 with chrome" &&\
( \
echo 'Package: python3'; \
echo "Version: ${PYTHON_VER}"; \
echo 'Architecture: amd64'; \
echo 'Maintainer: Dummy Pkg'; \
echo 'Description: Dummy package to satisfy chrome dependency'; \
echo 'Provides: python3, python3.11, python3-minimal, python3.11-minimal,' \
'libpython3.11, libpython3.11-minimal, libpython3-stdlib, libpython3.11-stdlib'; \
) > /tmp/python3.control && \
equivs-build /tmp/python3.control &&\
dpkg -i python3_${PYTHON_VER}_amd64.deb \
&& echo "Install GEOS - needed for cartopy" &&\
wget http://download.osgeo.org/geos/geos-3.7.2.tar.bz2 && tar xjf geos-3.7.2.tar.bz2 &&\
(cd geos-3.7.2 && ./configure && make clean && make && make install && ldconfig) &&\
rm -r geos-3.7.2.tar.bz2 \
&& echo "Install Python packages" &&\
pip install --upgrade pip &&\
pip install PyMySQL\
cartopy \
eofs \
imageio \
imutils \
lxml \
matplotlib \
metpy \
netCDF4 \
pandas \
pytest \
pyyaml \
scipy \
xarray