FROM buildpack-deps:bullseye ARG SRV_UID="1000" ARG SRV_GID="100" ARG SRV_LOCALE="en_US" ARG SRV_VERSION="0" ARG SRV_APT_GET_INSTALL="" ENV SRV_UID=$SRV_UID ENV SRV_GID=$SRV_GID ENV SRV_LOCALE=$SRV_LOCALE ENV SRV_VERSION=$SRV_VERSION ENV SRV_APT_GET_INSTALL=$SRV_APT_GET_INSTALL ENV DEBIAN_FRONTEND="noninteractive" ENV PGDATA="/data" ENV POSTGRES_INITDB_ARGS="--locale=${SRV_LOCALE}.UTF-8 --lc-ctype=${SRV_LOCALE}.UTF-8 --lc-monetary=${SRV_LOCALE}.UTF-8 --lc-numeric=${SRV_LOCALE}.UTF-8 --lc-time=${SRV_LOCALE}.UTF-8 --lc-collate=${SRV_LOCALE}.UTF-8 --encoding=UTF8" # explicitly set user/group IDs RUN if [ -z "$( getent group $SRV_GID )" ] ; then groupadd -r postgres --gid=$SRV_GID ; fi && \ useradd -r -g $SRV_GID --uid=$SRV_UID --home-dir=/var/lib/postgresql --shell=/bin/bash postgres && \ mkdir -p $PGDATA && chown -R $SRV_UID:$SRV_GID $PGDATA && \ apt-get update -y && apt-get install -y apt-utils lsb-release && \ ( curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg ) && \ ( echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list ) && \ apt-get update -y && mkdir -p /docker-entrypoint-initdb.d && \ apt-get install -y postgresql-16 postgresql-common postgresql-16-pglogical \ postgresql-16-cron postgresql-16-extra-window-functions \ postgresql-16-first-last-agg postgresql-16-jsquery postgresql-16-numeral \ postgresql-16-pglogical-ticker postgresql-16-pgmemcache \ postgresql-16-pgpcre postgresql-16-pgrouting postgresql-16-repack \ postgresql-16-pgrouting-scripts postgresql-16-pgsphere \ postgresql-16-postgis-3 postgresql-16-postgis-3-scripts \ postgresql-16-repack postgresql-16-set-user postgresql-16-similarity \ postgresql-16-pgpool2 postgresql-16-semver postgresql-16-repmgr \ postgresql-plperl-16 postgresql-plpython3-16 postgresql-16-age \ postgresql-16-pgvector postgresql-16-tablelog postgresql-16-wal2json \ apgdiff locales-all $SRV_APT_GET_INSTALL && \ apt-get clean && rm -rf ~/.cache && rm -rf /var/lib/apt/lists/* ENV PATH="/usr/lib/postgresql/16/bin:$PATH" COPY docker-entrypoint.sh / USER $SRV_UID:$SRV_GID RUN ln -s $PGDATA/.bash_history $HOME/.bash_history VOLUME $PGDATA WORKDIR $PGDATA ENTRYPOINT ["/docker-entrypoint.sh"] STOPSIGNAL SIGINT EXPOSE 5432 CMD ["postgres","-c","listen_addresses=*"] HEALTHCHECK --interval=30s --timeout=3s --retries=4 \ CMD pg_isready -U "${POSTGRES_USER:-postgres}"