1- FROM ubuntu:20 .04 AS compiler-common
1+ FROM ubuntu:22 .04 AS compiler-common
22ENV DEBIAN_FRONTEND=noninteractive
33
44RUN apt-get update \
55&& apt-get install -y --no-install-recommends \
66 git-core \
7- checkinstall \
8- g++ \
9- gnupg2 \
10- make \
11- tar \
12- wget \
137 ca-certificates \
148&& apt-get update
159
1610# ##########################################################################################################
1711
18- FROM compiler-common AS compiler-postgis
19- RUN echo "deb http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
20- && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
21- && apt-get update \
22- && apt-get install -y --no-install-recommends \
23- postgresql-server-dev-14 \
24- libxml2-dev \
25- libgeos-dev \
26- libproj-dev \
27- && wget https://download.osgeo.org/postgis/source/postgis-3.2.1.tar.gz -O postgis.tar.gz \
28- && mkdir -p postgis_src \
29- && tar -xvzf postgis.tar.gz --strip 1 -C postgis_src \
30- && rm postgis.tar.gz \
31- && cd postgis_src \
32- && ./configure --without-protobuf --without-raster \
33- && make -j $(nproc) \
34- && checkinstall --pkgversion="3.2.1" --install=no --default make install
35-
36- # ##########################################################################################################
37-
38- FROM compiler-common AS compiler-osm2pgsql
39- RUN apt-get install -y --no-install-recommends \
40- cmake \
41- libboost-dev \
42- libboost-system-dev \
43- libboost-filesystem-dev \
44- libexpat1-dev \
45- zlib1g-dev \
46- libbz2-dev \
47- libpq-dev \
48- libproj-dev \
49- lua5.3 \
50- liblua5.3-dev \
51- pandoc
52- RUN cd ~ \
53- && git clone -b master --single-branch https://github.com/openstreetmap/osm2pgsql.git --depth 1 \
54- && cd osm2pgsql \
55- && mkdir build \
56- && cd build \
57- && cmake .. \
58- && make -j $(nproc) \
59- && checkinstall --pkgversion="1" --install=no --default make install
60-
61- # ##########################################################################################################
62-
63- FROM compiler-common AS compiler-modtile-renderd
64- RUN apt-get install -y --no-install-recommends \
65- apache2-dev \
66- automake \
67- autoconf \
68- autotools-dev \
69- libtool \
70- libmapnik-dev
71- RUN cd ~ \
72- && git clone -b switch2osm --single-branch https://github.com/SomeoneElseOSM/mod_tile.git --depth 1 \
73- && cd mod_tile \
74- && ./autogen.sh \
75- && ./configure \
76- && make -j $(nproc) \
77- && checkinstall --pkgversion="1" --install=no --pkgname "renderd" --default make install \
78- && checkinstall --pkgversion="1" --install=no --pkgname "mod_tile" --default make install-mod_tile
79-
80- # ##########################################################################################################
81-
8212FROM compiler-common AS compiler-stylesheet
8313RUN cd ~ \
8414&& git clone --single-branch --branch v5.4.0 https://github.com/gravitystorm/openstreetmap-carto.git --depth 1 \
@@ -97,7 +27,7 @@ RUN mkdir -p /home/renderer/src \
9727
9828# ##########################################################################################################
9929
100- FROM ubuntu:20 .04 AS final
30+ FROM ubuntu:22 .04 AS final
10131
10232# Based on
10333# https://switch2osm.org/serving-tiles/manually-building-a-tile-server-18-04-lts/
@@ -111,30 +41,33 @@ RUN apt-get update \
11141&& apt-get install -y --no-install-recommends \
11242 apache2 \
11343 cron \
44+ dateutils \
11445 fonts-noto-cjk \
11546 fonts-noto-hinted \
11647 fonts-noto-unhinted \
48+ fonts-unifont \
11749 gnupg2 \
11850 gdal-bin \
11951 liblua5.3-dev \
12052 lua5.3 \
12153 mapnik-utils \
12254 npm \
55+ osm2pgsql \
12356 osmium-tool \
12457 osmosis \
58+ postgresql-14 \
59+ postgresql-14-postgis-3 \
60+ postgresql-14-postgis-3-scripts \
61+ postgis \
12562 python-is-python3 \
12663 python3-mapnik \
12764 python3-lxml \
12865 python3-psycopg2 \
12966 python3-shapely \
13067 python3-pip \
68+ renderd \
13169 sudo \
132- ttf-unifont \
13370 wget \
134- && echo "deb http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
135- && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
136- && apt-get update \
137- && apt-get install -y --no-install-recommends postgresql-14 \
13871&& apt-get clean autoclean \
13972&& apt-get autoremove --yes \
14073&& rm -rf /var/lib/{apt,dpkg,cache,log}/
@@ -146,16 +79,12 @@ RUN pip3 install \
14679 requests \
14780 osmium \
14881 pyyaml
149-
82+
15083# Install carto for stylesheet
15184RUN npm install -g
[email protected] 15285
15386# Configure Apache
154- RUN mkdir /var/lib/mod_tile \
155- && chown renderer /var/lib/mod_tile \
156- && mkdir /var/run/renderd \
157- && chown renderer /var/run/renderd \
158- && echo "LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so" >> /etc/apache2/conf-available/mod_tile.conf \
87+ RUN echo "LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so" >> /etc/apache2/conf-available/mod_tile.conf \
15988&& echo "LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so" >> /etc/apache2/conf-available/mod_headers.conf \
16089&& a2enconf mod_tile && a2enconf mod_headers
16190COPY apache.conf /etc/apache2/sites-available/000-default.conf
@@ -179,43 +108,28 @@ RUN chown -R postgres:postgres /var/lib/postgresql \
179108&& echo "host all all ::/0 md5" >> /etc/postgresql/14/main/pg_hba.conf
180109
181110# Create volume directories
182- RUN mkdir -p /data/database/ \
111+ RUN mkdir -p /run/renderd/ \
112+ && mkdir -p /data/database/ \
183113 && mkdir -p /data/style/ \
184114 && mkdir -p /home/renderer/src/ \
185115 && chown -R renderer: /data/ \
186116 && chown -R renderer: /home/renderer/src/ \
117+ && chown -R renderer: /run/renderd \
187118 && mv /var/lib/postgresql/14/main/ /data/database/postgres/ \
188- && mv /var/lib/mod_tile/ /data/tiles/ \
119+ && mv /var/cache/renderd/tiles/ /data/tiles/ \
120+ && chown -R renderer: /data/tiles \
189121 && ln -s /data/database/postgres /var/lib/postgresql/14/main \
190122 && ln -s /data/style /home/renderer/src/openstreetmap-carto \
191- && ln -s /data/tiles /var/lib/mod_tile \
123+ && ln -s /data/tiles /var/cache/renderd/tiles \
192124;
193125
194- # Install PostGIS
195- COPY --from=compiler-postgis postgis_src/postgis-src_3.2.1-1_amd64.deb .
196- RUN dpkg -i postgis-src_3.2.1-1_amd64.deb \
197- && rm postgis-src_3.2.1-1_amd64.deb
198-
199- # Install osm2pgsql
200- COPY --from=compiler-osm2pgsql /root/osm2pgsql/build/build_1-1_amd64.deb .
201- RUN dpkg -i build_1-1_amd64.deb \
202- && rm build_1-1_amd64.deb
203-
204- # Install renderd
205- COPY --from=compiler-modtile-renderd /root/mod_tile/renderd_1-1_amd64.deb .
206- RUN dpkg -i renderd_1-1_amd64.deb \
207- && rm renderd_1-1_amd64.deb \
208- && sed -i 's/renderaccount/renderer/g' /usr/local/etc/renderd.conf \
209- && sed -i 's/\/ truetype//g' /usr/local/etc/renderd.conf \
210- && sed -i 's/hot/tile/g' /usr/local/etc/renderd.conf
211-
212- # Install mod_tile
213- COPY --from=compiler-modtile-renderd /root/mod_tile/mod-tile_1-1_amd64.deb .
214- RUN dpkg -i mod-tile_1-1_amd64.deb \
215- && ldconfig \
216- && rm mod-tile_1-1_amd64.deb
217-
218- COPY --from=compiler-modtile-renderd /root/mod_tile/osmosis-db_replag /usr/bin/osmosis-db_replag
126+ RUN echo '[default] \n \
127+ URI=/tile/ \n \
128+ TILEDIR=/var/cache/renderd/tiles \n \
129+ XML=/home/renderer/src/openstreetmap-carto/mapnik.xml \n \
130+ HOST=localhost \n \
131+ TILESIZE=256 \n \
132+ MAXZOOM=20' >> /etc/renderd.conf
219133
220134# Install helper script
221135COPY --from=compiler-helper-script /home/renderer/src/regional /home/renderer/src/regional
0 commit comments