forked from KNMI/adaguc-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.NetCDF-4.6.1
executable file
·165 lines (138 loc) · 5.22 KB
/
Dockerfile.NetCDF-4.6.1
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
FROM centos/devtoolset-7-toolchain-centos7:7
USER root
MAINTAINER Adaguc Team at KNMI <[email protected]>
######### First stage (build) ############
# production packages, same as stage two
RUN yum update -y && yum install -y \
epel-release deltarpm
RUN yum install -y \
python-lxml \
cairo \
curl \
gd \
hdf5 \
libxml2 \
postgresql-server \
proj \
tomcat \
udunits2 \
openssl \
python-six
# building / development packages
RUN yum update -y && yum clean all
RUN yum install -y centos-release-scl && yum install -y devtoolset-7-gcc-c++ && source /opt/rh/devtoolset-7/enable
RUN yum install -y \
cairo-devel \
curl-devel \
gd-devel \
hdf5-devel \
libxml2-devel \
make \
openssl \
postgresql-devel \
proj-devel \
sqlite-devel \
udunits2-devel \
m4
ENV CPPFLAGS=-I/build/include
ENV LDFLAGS=-L/build/lib
ENV LD_LIBRARY_PATH=/build/lib:${LD_LIBRARY_PATH}
ENV PATH=/build/bin:${PATH}
WORKDIR /src/
# Install specific version of netcdf
RUN curl -L https://github.com/Unidata/netcdf-c/archive/v4.6.1.tar.gz > /src/netcdf-4.6.1.tar.gz && tar -xzvf netcdf-4.6.1.tar.gz
RUN mkdir -p /build && cd /src/netcdf-c-4.6.1 && ./configure --prefix /build && make -j4 && make install
# Install specific version of GDAL
WORKDIR /src/
RUN curl -L http://download.osgeo.org/gdal/2.4.1/gdal-2.4.1.tar.gz > /src/gdal-2.4.1.tar.gz && tar -xzvf gdal-2.4.1.tar.gz
RUN mkdir -p /build && cd /src/gdal-2.4.1 && ./configure --prefix /build && make -j4 && make install
## TODO: Base image ###
#FROM adaguc-baselibs
# Install adaguc-server from context
WORKDIR /adaguc
COPY . /adaguc/adaguc-server-master
# Alternatively install adaguc from github
# WORKDIR /adaguc
# ADD https://github.com/KNMI/adaguc-server/archive/master.tar.gz /adaguc/adaguc-server-master.tar.gz
# RUN tar -xzvf adaguc-server-master.tar.gz
WORKDIR /adaguc/adaguc-server-master
RUN bash compile.sh
######### Second stage (production) ############
FROM centos:7
# production packages, same as stage one
RUN yum update -y && yum install -y \
epel-release deltarpm
RUN yum install -y \
python-lxml \
cairo \
curl \
gd \
hdf5 \
libxml2 \
postgresql-server \
proj \
tomcat \
udunits2 \
openssl \
python-six
WORKDIR /adaguc/adaguc-server-master
# Install adaguc-services (spring boot application for running adaguc-server)
RUN curl -L https://jitpack.io/com/github/KNMI/adaguc-services/1.0.13/adaguc-services-1.0.13.war > /usr/share/tomcat/webapps/adaguc-services.war
# Install compiled adaguc binaries from stage one
COPY --from=0 /adaguc/adaguc-server-master/bin /adaguc/adaguc-server-master/bin
COPY --from=0 /adaguc/adaguc-server-master/data /adaguc/adaguc-server-master/data
COPY --from=0 /adaguc/adaguc-server-master/tests /adaguc/adaguc-server-master/tests
COPY --from=0 /adaguc/adaguc-server-master/runtests.sh /adaguc/adaguc-server-master/runtests.sh
COPY --from=0 /build /build
ENV CPPFLAGS=-I/build/include
ENV LDFLAGS=-L/build/lib
ENV LD_LIBRARY_PATH=/build/lib:${LD_LIBRARY_PATH}
ENV PATH=/build/bin:${PATH}
# Install python-netcdf
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
RUN python get-pip.py
RUN pip install netcdf4
# Run adaguc-server functional tests
RUN bash runtests.sh
# Setup directories
RUN mkdir -p /data/adaguc-autowms && \
mkdir -p /data/adaguc-datasets && \
mkdir -p /data/adaguc-data && \
mkdir -p /adaguc/userworkspace && \
mkdir -p /data/adaguc-services-home && \
mkdir -p /adaguc/basedir && \
mkdir -p /var/log/adaguc && \
mkdir -p /adaguc/adagucdb && \
mkdir -p /adaguc/security && \
mkdir -p /data/adaguc-datasets-internal && \
mkdir -p /servicehealth
# Configure
COPY ./Docker/adaguc-server-config.xml /adaguc/adaguc-server-config.xml
COPY ./Docker/adaguc-services-config.xml /adaguc/adaguc-services-config.xml
COPY ./Docker/start.sh /adaguc/
COPY ./Docker/adaguc-server-*.sh /adaguc/
COPY ./Docker/baselayers.xml /data/adaguc-datasets-internal/baselayers.xml
COPY ./Docker/tomcat-server.xml /etc/tomcat/server.xml
RUN chmod +x /adaguc/adaguc-server-*.sh && chmod +x /adaguc/start.sh
# Set adaguc-services configuration file
ENV ADAGUC_SERVICES_CONFIG=/adaguc/adaguc-services-config.xml
ENV ADAGUCDB=/adaguc/adagucdb
ENV EXTERNALADDRESS="http://localhost:8080/"
# These volumes are configured in /adaguc/adaguc-server-config.xml
# Place your netcdfs, HDF5 and GeoJSONS here, they will be visualized with the source=<file> KVP via the URI
VOLUME /data/adaguc-autowms
# Place your dataset XML configuration here, they will be accessible with the dataset=<dataset basename> KVP via the URI
VOLUME /data/adaguc-datasets
# Place your netcdfs, HDF5 and GeoJSONS here you don't want to have accessible via dataset configurations.
VOLUME /data/adaguc-data
# Loggings are save here, including logrotate
VOLUME /var/log/adaguc/
# You can make the postgresql database persistent by externally mounting it. Database will be initialized if directory is empty.
VOLUME /adaguc/adagucdb
# Settings for HTTPS / SSL can be set via keystore and truststore. Self signed cert will be created if nothing is provided.
VOLUME /adaguc/security
# For HTTP
EXPOSE 8080
# For HTTPS
EXPOSE 8443
ENTRYPOINT /adaguc/start.sh