Skip to content

Commit c7ffa83

Browse files
authored
Simplifed docker/docker-compose.yml file (#368)
By taking advantage of `YAML anchors`: https://docs.docker.com/compose/compose-file/10-fragments/ _Also_: - Added `full` service to `docker/docker-compose.yml` (including real osm data and openstreetmap carto) - Under `ubuntu-devel-full` - I.E. (`cd docker && docker compose up ubuntu-devel-full`) - In order to more fully test
1 parent d8cd8de commit c7ffa83

2 files changed

Lines changed: 148 additions & 98 deletions

File tree

docker/docker-compose.yml

Lines changed: 97 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,185 +1,184 @@
11
---
22
version: "3.8"
33

4+
x-mod_tile:
5+
build_defaults: &build_defaults
6+
context: ..
7+
build_defaults_centos_stream: &build_defaults_centos_stream
8+
<<: *build_defaults
9+
dockerfile: docker/centos/stream/Dockerfile
10+
build_defaults_debian: &build_defaults_debian
11+
<<: *build_defaults
12+
dockerfile: docker/debian/Dockerfile
13+
build_defaults_fedora: &build_defaults_fedora
14+
<<: *build_defaults
15+
dockerfile: docker/fedora/Dockerfile
16+
build_defaults_opensuse: &build_defaults_opensuse
17+
<<: *build_defaults
18+
dockerfile: docker/opensuse/Dockerfile
19+
build_defaults_ubuntu: &build_defaults_ubuntu
20+
<<: *build_defaults
21+
dockerfile: docker/ubuntu/Dockerfile
22+
service_defaults: &service_defaults
23+
env_file: .env
24+
ports:
25+
- 8081:8081
26+
427
services:
528
centos-7:
29+
<<: *service_defaults
630
build:
7-
context: ..
31+
<<: *build_defaults
832
dockerfile: docker/centos/7/Dockerfile
9-
env_file: .env
10-
ports:
11-
- 8081:8081
1233
ulimits:
1334
nofile: 40000
1435
centos-stream-8:
36+
<<: *service_defaults
1537
build:
38+
<<: *build_defaults_centos_stream
1639
args:
1740
centos_stream_version: "8"
1841
extra_repository: powertools
19-
context: ..
20-
dockerfile: docker/centos/stream/Dockerfile
21-
env_file: .env
22-
ports:
23-
- 8081:8081
2442
centos-stream-9:
43+
<<: *service_defaults
2544
build:
45+
<<: *build_defaults_centos_stream
2646
args:
2747
centos_stream_version: "9"
2848
extra_repository: crb
29-
context: ..
30-
dockerfile: docker/centos/stream/Dockerfile
31-
env_file: .env
32-
ports:
33-
- 8081:8081
3449
debian-10:
50+
<<: *service_defaults
3551
build:
52+
<<: *build_defaults_debian
3653
args:
3754
libmapnik_version: "3.0"
3855
debian_version: "10"
39-
context: ..
40-
dockerfile: docker/debian/Dockerfile
41-
env_file: .env
42-
ports:
43-
- 8081:8081
4456
debian-11:
57+
<<: *service_defaults
4558
build:
59+
<<: *build_defaults_debian
4660
args:
4761
libmapnik_version: "3.1"
4862
debian_version: "11"
49-
context: ..
50-
dockerfile: docker/debian/Dockerfile
51-
env_file: .env
52-
ports:
53-
- 8081:8081
5463
debian-12:
64+
<<: *service_defaults
5565
build:
66+
<<: *build_defaults_debian
5667
args:
5768
libmapnik_version: "3.1"
5869
debian_version: "12"
59-
context: ..
60-
dockerfile: docker/debian/Dockerfile
61-
env_file: .env
62-
ports:
63-
- 8081:8081
6470
debian-testing:
71+
<<: *service_defaults
6572
build:
73+
<<: *build_defaults_debian
6674
args:
6775
libmapnik_version: "3.1"
6876
debian_version: testing
69-
context: ..
70-
dockerfile: docker/debian/Dockerfile
71-
env_file: .env
72-
ports:
73-
- 8081:8081
7477
fedora-34:
78+
<<: *service_defaults
7579
build:
80+
<<: *build_defaults_fedora
7681
args:
7782
fedora_version: "34"
78-
context: ..
79-
dockerfile: docker/fedora/Dockerfile
80-
env_file: .env
81-
ports:
82-
- 8081:8081
8383
fedora-35:
84+
<<: *service_defaults
8485
build:
86+
<<: *build_defaults_fedora
8587
args:
8688
fedora_version: "35"
87-
context: ..
88-
dockerfile: docker/fedora/Dockerfile
89-
env_file: .env
90-
ports:
91-
- 8081:8081
9289
fedora-36:
90+
<<: *service_defaults
9391
build:
92+
<<: *build_defaults_fedora
9493
args:
9594
fedora_version: "36"
96-
context: ..
97-
dockerfile: docker/fedora/Dockerfile
98-
env_file: .env
99-
ports:
100-
- 8081:8081
10195
fedora-37:
96+
<<: *service_defaults
10297
build:
98+
<<: *build_defaults_fedora
10399
args:
104100
fedora_version: "37"
105-
context: ..
106-
dockerfile: docker/fedora/Dockerfile
107-
env_file: .env
108-
ports:
109-
- 8081:8081
110101
fedora-38:
102+
<<: *service_defaults
111103
build:
104+
<<: *build_defaults_fedora
112105
args:
113106
fedora_version: "38"
114-
context: ..
115-
dockerfile: docker/fedora/Dockerfile
116-
env_file: .env
117-
ports:
118-
- 8081:8081
119107
fedora-39:
108+
<<: *service_defaults
120109
build:
110+
<<: *build_defaults_fedora
121111
args:
122112
fedora_version: "39"
123-
context: ..
124-
dockerfile: docker/fedora/Dockerfile
125-
env_file: .env
126-
ports:
127-
- 8081:8081
128113
fedora-rawhide:
114+
<<: *service_defaults
129115
build:
116+
<<: *build_defaults_fedora
130117
args:
131-
fedora_version: rawhide
132-
context: ..
133-
dockerfile: docker/fedora/Dockerfile
134-
env_file: .env
135-
ports:
136-
- 8081:8081
118+
fedora_version: "rawhide"
137119
opensuse-leap-15:
120+
<<: *service_defaults
138121
build:
122+
<<: *build_defaults_opensuse
139123
args:
140124
boost_version: "1_75_0"
141-
opensuse_version: leap:15
142-
context: ..
143-
dockerfile: docker/opensuse/Dockerfile
144-
env_file: .env
145-
ports:
146-
- 8081:8081
125+
opensuse_version: "leap:15"
147126
opensuse-tumbleweed:
127+
<<: *service_defaults
148128
build:
129+
<<: *build_defaults_opensuse
149130
args:
150-
opensuse_version: tumbleweed
151-
context: ..
152-
dockerfile: docker/opensuse/Dockerfile
153-
env_file: .env
154-
ports:
155-
- 8081:8081
131+
opensuse_version: "tumbleweed"
156132
ubuntu-20.04:
133+
<<: *service_defaults
157134
build:
135+
<<: *build_defaults_ubuntu
158136
args:
159137
libmapnik_version: "3.0"
160138
ubuntu_version: "20.04"
161-
context: ..
162-
dockerfile: docker/ubuntu/Dockerfile
163-
env_file: .env
164-
ports:
165-
- 8081:8081
166139
ubuntu-22.04:
140+
<<: *service_defaults
167141
build:
142+
<<: *build_defaults_ubuntu
168143
args:
169144
libmapnik_version: "3.1"
170145
ubuntu_version: "22.04"
171-
context: ..
172-
dockerfile: docker/ubuntu/Dockerfile
173-
env_file: .env
174-
ports:
175-
- 8081:8081
176146
ubuntu-devel:
147+
<<: *service_defaults
177148
build:
149+
<<: *build_defaults_ubuntu
178150
args:
179151
libmapnik_version: "3.1"
180-
ubuntu_version: devel
181-
context: ..
182-
dockerfile: docker/ubuntu/Dockerfile
183-
env_file: .env
184-
ports:
185-
- 8081:8081
152+
ubuntu_version: "devel"
153+
ubuntu-devel-full:
154+
<<: *service_defaults
155+
build:
156+
<<: *build_defaults_ubuntu
157+
args:
158+
libmapnik_version: "3.1"
159+
ubuntu_version: "devel"
160+
depends_on:
161+
- postgres
162+
entrypoint: /entrypoint.sh
163+
environment:
164+
DOWNLOAD_PBF: http://download.geofabrik.de/africa/eritrea-latest.osm.pbf
165+
PGDATABASE: gis
166+
PGHOST: postgres
167+
PGUSER: renderer
168+
volumes:
169+
- data:/data
170+
- ./ubuntu/entrypoint.sh:/entrypoint.sh:ro
171+
postgres:
172+
env_file: .env
173+
environment:
174+
POSTGRES_DB: gis
175+
POSTGRES_HOST_AUTH_METHOD: trust
176+
POSTGRES_USER: renderer
177+
image: postgis/postgis
178+
volumes:
179+
- pgdata:/var/lib/postgresql/data
180+
shm_size: 1gb
181+
182+
volumes:
183+
data:
184+
pgdata:

docker/ubuntu/entrypoint.sh

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env sh
2+
3+
if [ ! -f /data/style/mapnik.xml ]
4+
then
5+
export DEBIAN_FRONTEND=noninteractive
6+
7+
apt-get --yes update
8+
9+
apt-get --no-install-recommends --yes install \
10+
curl \
11+
gdal-bin \
12+
git \
13+
node-carto \
14+
osm2pgsql \
15+
postgresql-client \
16+
python3-yaml \
17+
unzip
18+
19+
git clone https://github.com/gravitystorm/openstreetmap-carto.git --depth 1 /data/style
20+
21+
cd /data/style
22+
23+
python3 ./scripts/get-external-data.py -c /data/style/external-data.yml -D /data/style/data
24+
25+
./scripts/get-fonts.sh
26+
27+
mv fonts/* /usr/share/fonts/
28+
29+
psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "CREATE EXTENSION postgis;"
30+
psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "CREATE EXTENSION hstore;"
31+
psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "ALTER TABLE geometry_columns OWNER TO ${PGUSER};"
32+
psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --command "ALTER TABLE spatial_ref_sys OWNER TO ${PGUSER};"
33+
34+
curl --location "${DOWNLOAD_PBF:-http://download.geofabrik.de/asia/vietnam-latest.osm.pbf}" --output /data/region.osm.pbf
35+
36+
osm2pgsql --host "${PGHOST}" --username "${PGUSER}" --database "${PGDATABASE}" --create --slim -G --hstore \
37+
--tag-transform-script /data/style/openstreetmap-carto.lua \
38+
--number-processes "$(nproc)" \
39+
-S /data/style/openstreetmap-carto.style \
40+
/data/region.osm.pbf
41+
42+
psql --host "${PGHOST}" --user "${PGUSER}" --dbname "${PGDATABASE}" --file /data/style/indexes.sql
43+
44+
carto /data/style/project.mml > /data/style/mapnik.xml
45+
sed -i 's#/usr/share/renderd/example-map/mapnik.xml#/data/style/mapnik.xml#g' /etc/renderd.conf
46+
sed -i 's/URI=/MAXZOOM=20\nMINZOOM=0\URI=/g' /etc/renderd.conf
47+
sed -i 's/maxZoom: 12/maxZoom: 20/g' /usr/share/renderd/example-map/index.html
48+
fi
49+
50+
apachectl -e debug -k start
51+
renderd --foreground

0 commit comments

Comments
 (0)