complement: init postgres DB directly inside the target image (#13819)
Doing so in the base postgres image doesn't work with buildah because
changes in a declared VOLUME in the Dockerfile is supposed to be
discarded, cf https://docs.docker.com/engine/reference/builder/#volume
Signed-off-by: Mathieu Velten <mathieuv@matrix.org>
2 files changed, 10 insertions, 11 deletions
diff --git a/changelog.d/13819.misc b/changelog.d/13819.misc
new file mode 100644
index 0000000000..e2f3bc1f40
--- /dev/null
+++ b/changelog.d/13819.misc
@@ -0,0 +1 @@
+complement: init postgres DB directly inside the target image instead of the base postgres image to fix building using Buildah.
diff --git a/docker/complement/Dockerfile b/docker/complement/Dockerfile
index 3cfff19f9a..0e13722d1c 100644
--- a/docker/complement/Dockerfile
+++ b/docker/complement/Dockerfile
@@ -17,26 +17,24 @@ ARG SYNAPSE_VERSION=latest
# the same debian version as Synapse's docker image (so the versions of the
# shared libraries match).
-FROM postgres:13-bullseye AS postgres_base
- # initialise the database cluster in /var/lib/postgresql
- RUN gosu postgres initdb --locale=C --encoding=UTF-8 --auth-host password
-
- # Configure a password and create a database for Synapse
- RUN echo "ALTER USER postgres PASSWORD 'somesecret'" | gosu postgres postgres --single
- RUN echo "CREATE DATABASE synapse" | gosu postgres postgres --single
-
# now build the final image, based on the Synapse image.
FROM matrixdotorg/synapse-workers:$SYNAPSE_VERSION
# copy the postgres installation over from the image we built above
RUN adduser --system --uid 999 postgres --home /var/lib/postgresql
- COPY --from=postgres_base /var/lib/postgresql /var/lib/postgresql
- COPY --from=postgres_base /usr/lib/postgresql /usr/lib/postgresql
- COPY --from=postgres_base /usr/share/postgresql /usr/share/postgresql
+ COPY --from=postgres:13-bullseye /usr/lib/postgresql /usr/lib/postgresql
+ COPY --from=postgres:13-bullseye /usr/share/postgresql /usr/share/postgresql
RUN mkdir /var/run/postgresql && chown postgres /var/run/postgresql
ENV PATH="${PATH}:/usr/lib/postgresql/13/bin"
ENV PGDATA=/var/lib/postgresql/data
+ # initialise the database cluster in /var/lib/postgresql
+ RUN gosu postgres initdb --locale=C --encoding=UTF-8 --auth-host password
+
+ # Configure a password and create a database for Synapse
+ RUN echo "ALTER USER postgres PASSWORD 'somesecret'" | gosu postgres postgres --single
+ RUN echo "CREATE DATABASE synapse" | gosu postgres postgres --single
+
# Extend the shared homeserver config to disable rate-limiting,
# set Complement's static shared secret, enable registration, amongst other
# tweaks to get Synapse ready for testing.
|