Mercurial > gemma
annotate docker/Dockerfile.pg @ 5259:680be197844d
Merged branch new-fwa.
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Wed, 13 May 2020 11:28:34 +0200 |
parents | 8d6f43894f09 |
children | 71f73df1356d |
rev | line source |
---|---|
4165
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
1 FROM ubuntu:bionic |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
2 LABEL authors="tom.gottfried@intevation.de" |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
3 LABEL description="Contains software from gemma, for right holders and\ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
4 licensing infos, see https://hg.intevation.de/gemma ." |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
5 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
6 ENV DEBIAN_FRONTEND noninteractive |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
7 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
8 RUN apt-get update &&\ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
9 apt-get -y install git make gcc libreadline-dev zlib1g-dev flex bison |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
10 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
11 # Add PostgreSQL's repository |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
12 WORKDIR /opt/ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
13 RUN git clone git://git.postgresql.org/git/postgresql.git |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
14 WORKDIR /opt/postgresql |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
15 RUN git checkout REL_11_STABLE |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
16 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
17 ENV PGDATA /usr/local/pgsql/data |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
18 ENV PGBIN /usr/local/pgsql/bin |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
19 ENV PGCONF /usr/local/pgsql/data/postgresql.conf |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
20 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
21 # Install PostgreSQL from sources |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
22 RUN ./configure && make && make install |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
23 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
24 # Install PostGIS dependencies |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
25 RUN apt-get -y install autoconf xsltproc \ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
26 libproj-dev libgeos-dev libxml2-dev libjson-c-dev libgdal-dev |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
27 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
28 # Add PostGIS repository and build it |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
29 WORKDIR /opt/ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
30 RUN git clone https://git.osgeo.org/gitea/postgis/postgis.git |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
31 WORKDIR /opt/postgis |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
32 RUN git checkout svn-2.5 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
33 RUN ./autogen.sh && ./configure --with-pgconfig=$PGBIN/pg_config && \ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
34 make comments && make && make install |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
35 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
36 # Build btree_gist extension |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
37 WORKDIR /opt/postgresql/contrib/btree_gist |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
38 RUN make && make install |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
39 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
40 # Put PostgreSQL executables in path |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
41 ENV PATH $PGBIN:$PATH |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
42 |
4167 | 43 # Add pgTAP repository and build it |
44 WORKDIR /opt | |
45 RUN git clone https://github.com/theory/pgtap.git | |
46 WORKDIR /opt/pgtap | |
47 RUN make && make install | |
48 | |
4165
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
49 # Initialize cluster |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
50 RUN mkdir -p $PGDATA && useradd postgres -d $PGDATA && chown postgres $PGDATA |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
51 USER postgres |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
52 RUN $PGBIN/initdb -D $PGDATA |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
53 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
54 RUN \ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
55 # Adjust PostgreSQL configuration to allow remote connections |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
56 echo "host all all 0.0.0.0/0 md5" \ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
57 >> /usr/local/pgsql/data/pg_hba.conf &&\ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
58 echo "listen_addresses='*'" >> $PGCONF &&\ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
59 # Set port to standard value |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
60 sed -i '/port/s/543./5432/' $PGCONF &&\ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
61 # Keep log on stderr to be able to use docker logs |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
62 sed -i '/logging_collector/s/on/off/' $PGCONF |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
63 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
64 # Expose the PostgreSQL port |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
65 EXPOSE 5432 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
66 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
67 # Create GEMMA role and database |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
68 WORKDIR /opt/gemma |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
69 COPY schema/*.sql schema/*.sh ./ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
70 COPY schema/demo-data ./demo-data/ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
71 RUN $PGBIN/pg_ctl start -wo "--config_file=$PGCONF" && \ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
72 PATH=$PGBIN:$PATH ./install-db.sh --demo --metapw "geo2Serv" && \ |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
73 $PGBIN/pg_ctl stop -m smart |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
74 |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
75 # Set the default command to run when starting the container |
8dd59e2c9d3d
Add Dockerfile for testing with upstream PostgreSQL/PostGIS
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
76 CMD ["/usr/local/pgsql/bin/postgres", "-D", "/usr/local/pgsql/data"] |