Merge pull request #2498 from nextcloud/postgres-dockerfile

optimize postgres Dockerfile
This commit is contained in:
Simon L 2023-05-11 14:22:29 +02:00 committed by GitHub
commit f2e4d8284c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,39 +1,35 @@
# From https://github.com/docker-library/postgres/blob/master/15/alpine/Dockerfile # From https://github.com/docker-library/postgres/blob/master/15/alpine/Dockerfile
FROM postgres:15.2-alpine FROM postgres:15.2-alpine
RUN apk add --no-cache bash openssl shadow grep mawk COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
COPY --chmod=775 init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh
# We need to use the same gid and uid as on old installations
RUN set -ex; \ RUN set -ex; \
apk add --no-cache bash openssl shadow grep mawk; \
\
# We need to use the same gid and uid as on old installations
deluser postgres; \ deluser postgres; \
groupmod -g 9999 ping; \ groupmod -g 9999 ping; \
addgroup -g 999 -S postgres; \ addgroup -g 999 -S postgres; \
adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres adduser -u 999 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres; \
apk del --no-cache shadow; \
\
# Fix default permissions # Fix default permissions
RUN set -ex; \
chown -R postgres:postgres /var/lib/postgresql; \ chown -R postgres:postgres /var/lib/postgresql; \
chown -R postgres:postgres /var/run/postgresql; \ chown -R postgres:postgres /var/run/postgresql; \
chown -R postgres:postgres "$PGDATA" chown -R postgres:postgres "$PGDATA"; \
\
COPY start.sh /usr/bin/ mkdir /mnt/data; \
COPY healthcheck.sh /usr/bin/
COPY init-user-db.sh /docker-entrypoint-initdb.d/
RUN set -ex; \
chmod +x /usr/bin/start.sh; \
chmod +xr /docker-entrypoint-initdb.d/init-user-db.sh; \
chmod +x /usr/bin/healthcheck.sh
RUN mkdir /mnt/data; \
chown postgres:postgres /mnt/data; chown postgres:postgres /mnt/data;
\
# Give root a random password
echo "root:$(openssl rand -base64 12)" | chpasswd
VOLUME /mnt/data VOLUME /mnt/data
# Give root a random password
RUN echo "root:$(openssl rand -base64 12)" | chpasswd
USER postgres USER postgres
ENTRYPOINT ["start.sh"] ENTRYPOINT ["/start.sh"]
HEALTHCHECK CMD healthcheck.sh HEALTHCHECK CMD /healthcheck.sh
LABEL com.centurylinklabs.watchtower.monitor-only="true" LABEL com.centurylinklabs.watchtower.monitor-only="true"