Skip to content

Commit b6e4f8a

Browse files
committed
Updated Docker-based building and testing method
1 parent 0d13f9f commit b6e4f8a

19 files changed

Lines changed: 1002 additions & 188 deletions

.dockerignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,17 @@
44
!docs/man
55
!etc/apache2/renderd-example-map.conf
66
!etc/apache2/tile.load.in
7+
!etc/renderd/renderd.conf.examples
78
!etc/renderd/renderd.conf.in
89
!includes
910
!src
1011
!tests
1112
!utils/example-map
13+
14+
# AutoTools
15+
!autogen.sh
16+
!configure.ac
17+
!etc/renderd/renderd.conf
18+
!m4
19+
!Makefile.am
20+
!modules.mk

.github/workflows/docker-image-build.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ jobs:
1515
strategy:
1616
matrix:
1717
service-name:
18+
- archlinux
1819
- centos-7
1920
- centos-stream-8
2021
- centos-stream-9
2122
- debian-11
2223
- debian-12
2324
- debian-testing
25+
- debian-testing-autotools
2426
- fedora-38
2527
- fedora-39
2628
- fedora-rawhide
@@ -29,6 +31,7 @@ jobs:
2931
- ubuntu-20.04
3032
- ubuntu-22.04
3133
- ubuntu-devel
34+
- ubuntu-devel-autotools
3235
fail-fast: false
3336
steps:
3437
- name: Checkout repository
@@ -40,19 +43,34 @@ jobs:
4043

4144
- name: Test
4245
run: |
43-
until $(curl --fail --output tile.png --silent http://localhost:8081/tiles/renderd-example/9/297/191.png); do
46+
until $(curl --fail --output tile.jpg.file.0 --silent http://localhost:8081/tiles/renderd-example-jpg/9/297/191.jpg); do
4447
echo 'Sleeping 5s';
4548
sleep 5;
4649
done
47-
echo 'dbf26531286e844a3a9735cdd193598dca78d22f77cafe5824bcaf17f88cbb08 tile.png' | sha256sum --check
50+
sha256sum --check --ignore-missing tests/tiles.sha256sum | grep tile.jpg.file.0 | grep -q OK
51+
until $(curl --fail --output tile.png256.file.0 --silent http://localhost:8081/tiles/renderd-example-png256/9/297/191.png); do
52+
echo 'Sleeping 5s';
53+
sleep 5;
54+
done
55+
sha256sum --check --ignore-missing tests/tiles.sha256sum | grep tile.png256.file.0 | grep -q OK
56+
until $(curl --fail --output tile.png32.file.0 --silent http://localhost:8081/tiles/renderd-example-png32/9/297/191.png); do
57+
echo 'Sleeping 5s';
58+
sleep 5;
59+
done
60+
sha256sum --check --ignore-missing tests/tiles.sha256sum | grep tile.png32.file.0 | grep -q OK
61+
until $(curl --fail --output tile.webp.file.0 --silent http://localhost:8081/tiles/renderd-example-webp/9/297/191.webp); do
62+
echo 'Sleeping 5s';
63+
sleep 5;
64+
done
65+
sha256sum --check --ignore-missing tests/tiles.sha256sum | grep tile.webp.file.0 | grep -q OK
4866
timeout-minutes: 1
4967

5068
- name: Show logs
51-
if: failure()
5269
run: docker compose logs
5370
working-directory: docker
71+
if: failure()
5472

5573
- name: Stop
56-
if: success() || failure()
5774
run: docker compose down --volumes
5875
working-directory: docker
76+
if: success() || failure()

docker/.env

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
11
COMPOSE_PROJECT_NAME=mod_tile
2+
DOWNLOAD_PBF=https://download.geofabrik.de/europe/germany/nordrhein-westfalen/koeln-regbez-latest.osm.pbf
3+
PGDATABASE=gis
4+
PGHOST=postgres
5+
PGUSER=renderer

docker/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ For your convenience, we have provided a Docker-based building and testing metho
44

55
### The following distributions are currently supported:
66

7+
- archlinux _(Arch Linux)_ [[Dockerfile](/docker/archlinux/Dockerfile)]
78
- centos-7 _(CentOS 7)_ [[Dockerfile](/docker/centos/7/Dockerfile)]
89
- centos-stream-8 _(CentOS Stream 8)_ [[Dockerfile](/docker/centos/stream/Dockerfile)]
910
- centos-stream-9 _(CentOS Stream 9)_ [[Dockerfile](/docker/centos/stream/Dockerfile)]

docker/archlinux/Dockerfile

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Arguments
2+
ARG runner_additional_packages
3+
4+
# Builder
5+
FROM archlinux:latest as builder
6+
7+
## Install builder dependencies
8+
RUN --mount=id=archlinux:latest-/var/cache/pacman/pkg,sharing=locked,target=/var/cache/pacman/pkg,type=cache \
9+
--mount=id=archlinux:latest-/var/lib/pacman/sync,sharing=locked,target=/var/lib/pacman/sync,type=cache \
10+
pacman --sync --refresh --sysupgrade --noconfirm \
11+
apache \
12+
apr \
13+
boost \
14+
cairo \
15+
cmake \
16+
curl \
17+
extra-cmake-modules \
18+
gcc \
19+
git \
20+
glib2 \
21+
iniparser \
22+
lcov \
23+
libmemcached \
24+
make \
25+
mapnik \
26+
memcached \
27+
pkgconf
28+
29+
## Build, Test & Install `mod_tile`
30+
COPY . /tmp/mod_tile_src
31+
WORKDIR /tmp/mod_tile_build
32+
RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
33+
cmake -B . -S /tmp/mod_tile_src \
34+
-DCMAKE_BUILD_TYPE:STRING=Release \
35+
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
36+
-DCMAKE_INSTALL_PREFIX=/usr \
37+
-DCMAKE_INSTALL_RUNSTATEDIR=/run \
38+
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
39+
-DENABLE_TESTS:BOOL=ON && \
40+
cmake --build .
41+
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
42+
export DESTDIR=/tmp/mod_tile && \
43+
ctest --output-on-failure && \
44+
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
45+
46+
# Runner
47+
FROM archlinux:latest as runner
48+
49+
## Arguments
50+
ARG runner_additional_packages
51+
52+
## Install runner dependencies
53+
RUN --mount=id=archlinux:latest-/var/cache/pacman/pkg,sharing=locked,target=/var/cache/pacman/pkg,type=cache \
54+
--mount=id=archlinux:latest-/var/lib/pacman/sync,sharing=locked,target=/var/lib/pacman/sync,type=cache \
55+
pacman --sync --refresh --sysupgrade --noconfirm ${runner_additional_packages} \
56+
apache \
57+
cairo \
58+
curl \
59+
glib2 \
60+
iniparser \
61+
libmemcached \
62+
mapnik \
63+
memcached \
64+
# GDAL optional dependencies
65+
arrow \
66+
cfitsio \
67+
hdf5 \
68+
libheif \
69+
libjxl \
70+
mariadb-libs \
71+
netcdf \
72+
openexr \
73+
openjpeg2 \
74+
podofo \
75+
poppler
76+
77+
## Copy files from builder(s)
78+
### mod_tile
79+
COPY --from=builder /tmp/mod_tile /
80+
COPY --from=builder \
81+
/tmp/mod_tile_src/utils/example-map \
82+
/usr/share/renderd/example-map
83+
COPY --from=builder \
84+
/tmp/mod_tile_src/etc/apache2/renderd-example-map.conf \
85+
/etc/httpd/conf/extra/httpd-tile-renderd-example-map.conf
86+
87+
## Add configuration
88+
RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
89+
RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
90+
RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
91+
RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
92+
RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
93+
94+
## Enable module & site
95+
RUN printf '\nInclude conf/extra/httpd-tile.conf\n' >> /etc/httpd/conf/httpd.conf && \
96+
printf '\nInclude conf/extra/httpd-tile-renderd-example-map.conf\n' >> /etc/httpd/conf/httpd.conf
97+
98+
## Start services
99+
CMD httpd -e debug -k start; \
100+
G_MESSAGES_DEBUG=${G_MESSAGES_DEBUG:-info} renderd --foreground

docker/centos/7/Dockerfile

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ RUN --mount=id=centos:centos7-/var/cache/yum,target=/var/cache/yum,type=cache,sh
1818
boost169-devel \
1919
bzip2 \
2020
cairo-devel \
21-
freetype-devel \
2221
devtoolset-9-gcc \
2322
devtoolset-9-gcc-c++ \
23+
freetype-devel \
2424
gdal-devel \
2525
harfbuzz-devel \
2626
libicu-devel \
@@ -81,14 +81,14 @@ RUN --mount=id=centos:centos7-/var/cache/yum,target=/var/cache/yum,type=cache,sh
8181
ulimit -n 40000; \
8282
echo "install_weak_deps=0" >> /etc/yum.conf && \
8383
sed --in-place 's/keepcache=0/keepcache=1/g' /etc/yum.conf && \
84-
yum --assumeyes install epel-release && \
84+
yum --assumeyes install epel-release centos-release-scl && \
8585
yum --assumeyes upgrade && \
8686
yum --assumeyes install \
8787
boost169-devel \
8888
cairo-devel \
8989
cmake3 \
90-
gcc \
91-
gcc-c++ \
90+
devtoolset-9-gcc \
91+
devtoolset-9-gcc-c++ \
9292
gdal \
9393
glib2-devel \
9494
harfbuzz-devel \
@@ -111,17 +111,22 @@ COPY --from=mapnik-builder /tmp/mapnik /
111111
## Build, Test & Install `mod_tile`
112112
COPY . /tmp/mod_tile_src
113113
WORKDIR /tmp/mod_tile_build
114-
RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
114+
RUN source /opt/rh/devtoolset-9/enable && \
115+
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
115116
export CFLAGS="-I/usr/include/boost169" && \
116117
export CXXFLAGS="-I/usr/include/boost169" && \
117118
cmake3 -B . -S /tmp/mod_tile_src \
118119
-DCMAKE_BUILD_TYPE:STRING=Release \
120+
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
121+
-DCMAKE_INSTALL_PREFIX=/usr \
122+
-DCMAKE_INSTALL_RUNSTATEDIR=/run \
123+
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
119124
-DENABLE_TESTS:BOOL=ON && \
120125
cmake3 --build .
121-
RUN export DESTDIR=/tmp/mod_tile && \
126+
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
127+
export DESTDIR=/tmp/mod_tile && \
122128
ctest3 --output-on-failure && \
123-
(cmake3 --install . --prefix /usr --strip || make DESTDIR=${DESTDIR} install/strip) && \
124-
mv /tmp/mod_tile/var/run /tmp/mod_tile/run
129+
(cmake3 --install . --strip || make DESTDIR=${DESTDIR} install/strip)
125130

126131
# Runner
127132
FROM centos:centos7 as runner
@@ -162,11 +167,11 @@ COPY --from=builder \
162167
/etc/httpd/conf.d/renderd-example-map.conf
163168

164169
## Add configuration
165-
RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
166-
RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
167-
RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
168-
RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
169-
RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
170+
RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
171+
RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
172+
RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
173+
RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
174+
RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
170175

171176
## Start services
172177
CMD httpd -e debug -k start; \

docker/centos/stream/Dockerfile

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ RUN --mount=id=centos:stream${centos_stream_version}-/var/cache/dnf,target=/var/
119119
libtiff \
120120
libwebp \
121121
make \
122+
procps \
122123
proj
123124

124125
## Copy files from builder(s)
@@ -131,12 +132,16 @@ WORKDIR /tmp/mod_tile_build
131132
RUN export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) && \
132133
cmake -B . -S /tmp/mod_tile_src \
133134
-DCMAKE_BUILD_TYPE:STRING=Release \
135+
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
136+
-DCMAKE_INSTALL_PREFIX=/usr \
137+
-DCMAKE_INSTALL_RUNSTATEDIR=/run \
138+
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
134139
-DENABLE_TESTS:BOOL=ON && \
135140
cmake --build .
136-
RUN export DESTDIR=/tmp/mod_tile && \
141+
RUN export CTEST_PARALLEL_LEVEL=$(nproc) && \
142+
export DESTDIR=/tmp/mod_tile && \
137143
ctest --output-on-failure && \
138-
(cmake --install . --prefix /usr --strip || make DESTDIR=${DESTDIR} install/strip) && \
139-
mv /tmp/mod_tile/var/run /tmp/mod_tile/run
144+
(cmake --install . --strip || make DESTDIR=${DESTDIR} install/strip)
140145

141146
# Runner
142147
FROM quay.io/centos/centos:stream${centos_stream_version} as runner
@@ -183,11 +188,11 @@ COPY --from=builder \
183188
/etc/httpd/conf.d/renderd-example-map.conf
184189

185190
## Add configuration
186-
RUN printf '\n[example-map]\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
187-
RUN printf '\n[example-map-jpg]\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
188-
RUN printf '\n[example-map-png256]\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
189-
RUN printf '\n[example-map-png32]\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
190-
RUN printf '\n[example-map-webp]\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
191+
RUN printf '\n[example-map]\nMAXZOOM=20\nMINZOOM=0\nURI=/tiles/renderd-example\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
192+
RUN printf '\n[example-map-jpg]\nMAXZOOM=20\nMINZOOM=0\nTYPE=jpg image/jpeg jpeg\nURI=/tiles/renderd-example-jpg\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
193+
RUN printf '\n[example-map-png256]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png256\nURI=/tiles/renderd-example-png256\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
194+
RUN printf '\n[example-map-png32]\nMAXZOOM=20\nMINZOOM=0\nTYPE=png image/png png32\nURI=/tiles/renderd-example-png32\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
195+
RUN printf '\n[example-map-webp]\nMAXZOOM=20\nMINZOOM=0\nTYPE=webp image/webp webp\nURI=/tiles/renderd-example-webp\nXML=/usr/share/renderd/example-map/mapnik.xml\n' >> /etc/renderd.conf
191196

192197
## Start services
193198
CMD httpd -e debug -k start; \

0 commit comments

Comments
 (0)