Mercurial > dive4elements > river
changeset 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 | f3aa7a12c86a |
children | 28647fff733b |
files | docker/Dockerfile.artifacts docker/Dockerfile.db docker/Dockerfile.gwt-client docker/README docker/docker-compose.yml |
diffstat | 5 files changed, 64 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/docker/Dockerfile.artifacts Mon Jul 12 14:39:58 2021 +0200 +++ b/docker/Dockerfile.artifacts Thu Feb 24 18:49:02 2022 +0100 @@ -5,7 +5,7 @@ # Necessary to run further yum-installs inside Docker container, # if not already part of the base image: -RUN yum -y install yum-plugin-ovl +RUN yum -y install yum-plugin-ovl && rpm --rebuilddb # Install prerequisites RUN yum -y install maven mercurial curl
--- 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"]
--- a/docker/Dockerfile.gwt-client Mon Jul 12 14:39:58 2021 +0200 +++ b/docker/Dockerfile.gwt-client Thu Feb 24 18:49:02 2022 +0100 @@ -5,7 +5,7 @@ # Necessary to run further yum-installs inside Docker container, # if not already part of the base image: -RUN yum -y install yum-plugin-ovl +RUN yum -y install yum-plugin-ovl && rpm --rebuilddb # Install prerequisites RUN yum -y install maven mercurial tomcat gnu-free-sans-fonts curl
--- a/docker/README Mon Jul 12 14:39:58 2021 +0200 +++ b/docker/README Thu Feb 24 18:49:02 2022 +0100 @@ -8,22 +8,10 @@ gwt-client/src/main/webapp/WEB-INF/config.yaml -Build: - -$ docker build -f docker/Dockerfile.db -t d4e/river_db . -$ docker build -f docker/Dockerfile.artifacts -t d4e/river_artifacts . -$ docker build -f docker/Dockerfile.gwt-client -t d4e/river_client . - +Build and run: -Run: - -$ docker network create d4e_river -$ docker run --name d4eriver-db --network d4e_river \ - -dp 2345:5432 d4e/river_db:latest -$ docker run --name d4eriver-artifacts --network d4e_river \ - -dp 8181:8181 d4e/river_artifacts -$ docker run --name d4eriver-client --network d4e_river \ - -v $PWD:/opt/d4e/river -dp 8080:8080 d4e/river_client +$ cd docker +$ docker-compose up The application should now be accessible on your docker host under port 8080 and path /d4e-river (e.g. http://your-host:8080/d4e-river).
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docker/docker-compose.yml Thu Feb 24 18:49:02 2022 +0100 @@ -0,0 +1,37 @@ +version: "3.5" +services: + db: + container_name: "d4eriver-db" + build: + context: ../ + dockerfile: ./docker/Dockerfile.db + image: "d4e/river_db" + networks: + - d4e_river + server: + container_name: "d4eriver-artifacts" + build: + context: ../ + dockerfile: ./docker/Dockerfile.artifacts + image: "d4e/river_artifacts" + networks: + - d4e_river + depends_on: + - db + client: + container_name: "d4eriver-client" + build: + context: ../ + dockerfile: ./docker/Dockerfile.gwt-client + image: "d4e/river_client" + networks: + - d4e_river + depends_on: + - server + volumes: + - ../:/opt/d4e/river + ports: + - 8080:8080 +networks: + d4e_river: + name: d4e_river