diff docker/Dockerfile.db @ 9720:13e2d38ad314 3.2.x

Improve Docker based setup _ Make CentOS based images more resilient against package installation problems _ Upgrade database image to Debian bullseye to avoid OpenSSL bug that prevented downloading demo data and do some cleanup in passing _ Add docker-compose file for more automated setup
author Tom Gottfried <tom@intevation.de>
date Thu, 24 Feb 2022 18:49:02 +0100
parents c3afc0274bba
children 95496d21b4da
line wrap: on
line diff
--- a/docker/Dockerfile.db	Mon Jul 12 14:39:58 2021 +0200
+++ b/docker/Dockerfile.db	Thu Feb 24 18:49:02 2022 +0100
@@ -1,7 +1,9 @@
 # Docker file for postgresql 9.4 on debain
 
-FROM debian:jessie
-MAINTAINER tom@intevation.de
+FROM debian:bullseye
+LABEL maintainer tom.gottfried@intevation.de
+
+ENV PG_VERSION 13
 
 #
 # Use utf-8
@@ -19,25 +21,25 @@
 #
 # Install packages
 #
-RUN apt-get update && \
-    apt-get install -y postgresql-9.4-postgis-2.1 postgis curl
+RUN apt-get install -y postgresql-$PG_VERSION-postgis-3 curl
+RUN apt-get -y clean
+
+ENV PGCONF /etc/postgresql/$PG_VERSION/main/postgresql.conf
+ENV PGBIN /usr/lib/postgresql/$PG_VERSION/bin/
+ENV PGDATA /var/lib/postgresql/$PG_VERSION/main
 
 #
 # Use user postgres to run the next commands
 #
 USER postgres
 
-RUN /etc/init.d/postgresql start && \
-    psql --command "CREATE USER admin WITH SUPERUSER PASSWORD 'secret';"
-
 #
 # Adjust PostgreSQL configuration so that remote connections to the
 # database are possible.
 #
 RUN echo "host all  all    0.0.0.0/0  md5" >> \
-    /etc/postgresql/9.4/main/pg_hba.conf
+    /etc/postgresql/$PG_VERSION/main/pg_hba.conf
 
-ENV PGCONF /etc/postgresql/9.4/main/postgresql.conf
 RUN echo "listen_addresses='*'" >> $PGCONF
 
 #
@@ -55,25 +57,25 @@
 ADD ./backend/doc/schema /opt/d4eriver_db
 
 # Go to postgres home for write permissions
-WORKDIR /var/lib/postgresql
 ENV DATA_ARCH demodaten_3.1.10-bis-3.2.x.tar.gz
-RUN curl -s "https://wald.intevation.org/frs/download.php/2282/$DATA_ARCH" | \
-    tar --wildcards -xz 'demodaten/*.dump.sql'
+RUN curl -sf "https://wald.intevation.org/frs/download.php/2282/$DATA_ARCH" | \
+    tar -C $HOME --wildcards -xz 'demodaten/*.dump.sql'
 
-ENV PGDATA /var/lib/postgresql/9.4/main
-RUN /usr/lib/postgresql/9.4/bin/pg_ctl start -wo "--config_file=$PGCONF" && \
+RUN $PGBIN/pg_ctl start -wo "--config_file=$PGCONF" && \
     /opt/d4eriver_db/postgresql-setup.sh && \
-    psql -f demodaten/d4e_demodata.dump.sql d4e && \
+    psql -f ~/demodaten/d4e_demodata.dump.sql d4e && \
     createuser -S -D -R seddb && \
     psql -c "ALTER USER seddb WITH PASSWORD 'seddb'" && \
     createdb seddb && \
-    psql -f demodaten/seddb_demodata.dump.sql seddb && \
+    psql -f ~/demodaten/seddb_demodata.dump.sql seddb && \
     psql -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO seddb" seddb && \
-    /usr/lib/postgresql/9.4/bin/pg_ctl stop
+    $PGBIN/pg_ctl stop -m smart
+
+RUN rm -r ~/demodaten
 
 #
 # Set the default command to run when starting the container
 #
-CMD ["/usr/lib/postgresql/9.4/bin/postgres", "-D", \
-     "/var/lib/postgresql/9.4/main", "-c", \
-     "config_file=/etc/postgresql/9.4/main/postgresql.conf"]
+CMD ["/usr/lib/postgresql/13/bin/postgres", "-D", \
+     "/var/lib/postgresql/13/main", "-c", \
+     "config_file=/etc/postgresql/13/main/postgresql.conf"]

http://dive4elements.wald.intevation.org