-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
149 lines (108 loc) · 4.49 KB
/
Dockerfile
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
ARG MAPSERVER_VERSION="8.0.1"
ARG MAPCACHE_VERSION="1.14.0"
ARG NGINX_VERSION="1.26.0"
# --------------------------------------------------------------------------
FROM ubuntu:24.04 as builder
ARG MAPSERVER_VERSION
ARG MAPCACHE_VERSION
ARG NGINX_VERSION
LABEL org.opencontainers.image.authors="Gergo Gelencser <[email protected]>"
USER root
# Install the dependencies
RUN apt update && \
apt install -y --no-install-recommends \
libfcgi-dev libgdal-dev libgeos-dev libproj-dev libcurl4-gnutls-dev libpcre3-dev \
libpixman-1-dev libfreetype6-dev libfribidi-dev libharfbuzz-dev libexempi-dev \
apache2-dev libapr1-dev libaprutil1-dev libprotobuf-c-dev protobuf-c-compiler \
libpng-dev libjpeg-dev libgif-dev libtiff-dev libcairo2-dev libgd-dev \
liblmdb-dev libpq-dev libsqlite3-dev libxml2-dev libxslt1-dev \
cmake build-essential wget ca-certificates
COPY ./scripts/* /root/
RUN /root/build_mapserver.sh && \
/root/build_mapcache.sh && \
/root/build_nginx.sh
RUN apt remove -y cmake build-essential wget && \
apt autoremove -y && \
apt clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# --------------------------------------------------------------------------
# FROM node:lts-alpine as client
#
# WORKDIR /var/www/client/
#
# COPY ./client/package.json ./client/package-lock.json ./
#
# RUN npm ci
#
# COPY . /var/www/
#
# RUN npm run build
# --------------------------------------------------------------------------
# FROM composer:lts as api
#
# COPY ./api/composer.json ./api/composer.lock ./app/
# RUN composer install
# --------------------------------------------------------------------------
FROM ubuntu:24.04 as base
ARG MAPSERVER_VERSION
ARG MAPCACHE_VERSION
LABEL org.opencontainers.image.authors="Gergo Gelencser <[email protected]>"
# Install the dependencies
ENV DEBIAN_FRONTEND noninteractive
RUN apt update && \
apt install -y --no-install-recommends \
cgi-mapserver mapserver-bin mapcache-cgi libapache2-mod-mapcache mapcache-tools gdal-bin \
apache2 libapache2-mod-fcgid nginx spawn-fcgi fcgiwrap php-fpm && \
apt clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Get the executables from builder
COPY --from=builder \
/usr/local/bin/legend \
/usr/local/bin/map2img \
/usr/local/bin/mapserv \
/usr/local/bin/msencrypt \
/usr/local/bin/scalebar \
/usr/local/bin/shptree \
/usr/local/bin/coshp \
/usr/local/bin/shptreetst \
/usr/local/bin/shptreevis \
/usr/local/bin/sortshp \
/usr/local/bin/tile4ms \
/usr/local/bin/mapcache.fcgi \
/usr/local/bin/mapcache_detail \
/usr/local/bin/mapcache_seed \
/usr/bin/
COPY --from=builder /usr/local/lib/libmap* /usr/lib/
COPY --from=builder /usr/local/sbin/nginx /usr/sbin/nginx
COPY --from=builder /usr/lib/apache2/modules/mod_mapcache.so /usr/lib/apache2/modules/mod_mapcache.so
# Set up the configuration
RUN a2enmod alias authn_core authn_file auth_basic authz_core authz_host fcgid headers mapcache proxy_fcgi rewrite setenvif && \
a2dismod -f access_compat authz_user autoindex filter status && \
a2enconf php8.3-fpm && \
a2disconf charset localized-error-pages other-vhosts-access-log security serve-cgi-bin && \
rm -rf /var/www/html
COPY ./apache.conf /etc/apache2/sites-enabled/000-default.conf
COPY ./nginx.conf /etc/nginx/sites-enabled/default
COPY ./php.conf /etc/php/8.3/fpm/pool.d/www.conf
# Copy source code
COPY --chown=www-data:www-data . /var/www
# COPY --chown=www-data:www-data --from=client /var/www/client/node_modules /var/www/client/
# COPY --chown=www-data:www-data --from=client /var/www/public/mapserver/web /var/www/public/mapserver/
# COPY --chown=www-data:www-data --from=api /app/vendor /var/www/api/
# Start the server
ENV MAPSERVER_VERSION=${MAPSERVER_VERSION}
ENV MAPCACHE_VERSION=${MAPCACHE_VERSION}
EXPOSE 80 443
WORKDIR /var/www
# --------------------------------------------------------------------------
FROM base as apache
# APACHE_VERSION=$(apache2 -v | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
ENV WEBSERVER_NAME="Apache"
ENV WEBSERVER_VERSION="2.4.58"
CMD ["sh", "-c", "apachectl -DFOREGROUND & php-fpm8.3 -F -R"]
# --------------------------------------------------------------------------
FROM base as nginx
ARG NGINX_VERSION
ENV WEBSERVER_NAME="NGINX"
ENV WEBSERVER_VERSION=${NGINX_VERSION}
CMD ["sh", "-c", "nginx -g 'daemon off;' & /etc/init.d/fcgiwrap start -f & php-fpm8.3 -F -R"]