common/example/images/postgres/Dockerfile.alpine

132 lines
3.9 KiB
Docker

#FROM golang:1.18-alpine AS wal-g
#
#ARG WALG_VERSION=2.0.1
#
#RUN set -eux &&\
# apk --no-cache upgrade &&\
# apk --no-cache \
# --virtual build-deps \
# add musl-dev \
# gcc \
# zstd-dev \
# lz4-dev \
# brotli-dev \
# lzo-dev \
# libsodium-dev \
# make \
# cmake \
# curl \
# git \
# bash \
# ca-certificates &&\
# cd /tmp &&\
# git clone --branch=v${WALG_VERSION} --depth=1 https://github.com/wal-g/wal-g.git &&\
# cd wal-g &&\
# export USE_BROTLI=1 &&\
# export USE_LIBSODIUM=1 &&\
# export USE_LZO=1 &&\
# make deps &&\
# make pg_build &&\
# mv main/pg/wal-g /usr/local/bin/ &&\
# chown root:root /usr/local/bin/wal-g &&\
# chmod 755 /usr/local/bin/wal-g &&\
# apk del build-deps
FROM danielberteaud/alpine:24.3-1 AS pgbackrest
ARG PGBACKREST_VERSION=2.48
RUN set -eux &&\
apk --no-cache upgrade &&\
apk --no-cache \
--virtual build-deps \
add postgresql15-dev \
musl-dev \
openssl-dev \
libxml2-dev \
lz4-dev \
zstd-dev \
bzip2-dev \
yaml-dev \
libssh2-dev \
make \
curl \
ca-certificates \
tar &&\
cd /tmp &&\
curl -sSLO https://github.com/pgbackrest/pgbackrest/archive/release/${PGBACKREST_VERSION}.tar.gz &&\
tar xvzf ${PGBACKREST_VERSION}.tar.gz &&\
cd pgbackrest-release-${PGBACKREST_VERSION}/src &&\
./configure &&\
make &&\
cp pgbackrest /usr/local/bin &&\
chown root:root /usr/local/bin/pgbackrest &&\
chmod 755 /usr/local/bin/pgbackrest &&\
apk del build-deps
FROM danielberteaud/alpine:24.3-1
MAINTAINER Daniel Berteaud <dbd@ehtrace.com>
ARG PG_VERSION=15
ENV LANG=fr_FR.utf8 \
TZ=Europe/Paris \
PGDATA=/data/db/${PG_VERSION} \
PATH=/usr/lib/postgresql${PG_VERSION}:${PATH} \
PG_USER=postgres \
PG_CONFFILE=postgresql.conf \
PG_CONF_listen_addresses="'0.0.0.0'" \
PG_CONF_timezone="'Europe/Paris'" \
PG_CONF_log_timezone="'Europe/Paris'" \
PG_CONF_log_line_prefix="'[%l-1] user=%u,db=%d,app=%a,client=%h '" \
PG_CONF_shared_buffers=25% \
PG_CONF_maintenance_work_mem=5% \
PG_CONF_work_mem=1% \
PG_CONF_wal_compression=zstd \
PG_CONF_log_min_duration_statement=2000 \
PG_CONF_log_destination=stderr \
PG_CONF_log_directory="'/proc/1/fd/'" \
PG_CONF_log_filename=1 \
PGHOST=/run/postgresql \
PGBACKREST_PG1_PATH=/data/db/${PG_VERSION} \
PGBACKREST_LOCK_PATH=/dev/shm \
PGBACKREST_COMPRESS_TYPE=zst \
PGBACKREST_START_FAST=y \
PGBACKREST_REPO1_BLOCK=y \
PGBACKREST_REPO1_BUNDLE=y \
PGBACKREST_REPO1_SFTP_PRIVATE_KEY_FILE=/data/ssh/id_ed25519 \
PGBACKREST_SPOOL_PATH=/data/spool \
PGBACKREST_ARCHIVE_ASYNC=y \
PGBACKREST_ARCHIVE_PUSH_QUEUE_MAX=5GiB \
PGBACKREST_LOG_PATH=/data/log \
PGBACKREST_LOG_LEVEL_CONSOLE=detail \
PGBACKREST_REPO1_RETENTION_HISTORY=365
RUN set -eux &&\
apk --no-cache upgrade &&\
apk --no-cache add postgresql${PG_VERSION} \
postgresql${PG_VERSION}-client \
postgresql${PG_VERSION}-contrib \
postgresql-timescaledb \
icu-data-full \
tzdata \
openssh-keygen \
libssh2 \
supercronic &&\
mkdir -p /data/db/${PG_VERSION} &&\
mkdir -p /data/ssh &&\
mkdir -p /data/spool &&\
mkdir -p /data/log &&\
mkdir -p /run/postgresql &&\
chmod 750 /data/db/${PG_VERSION} /data/ssh /data/spool /data/log &&\
chown -R postgres:postgres /data /run/postgresql
COPY --from=pgbackrest /usr/local/bin/pgbackrest /usr/local/bin/pgbackrest
#COPY --from=wal-g /usr/local/bin/wal-g /usr/local/bin/wal-g
COPY root/ /
EXPOSE 5432
USER postgres
CMD ["postgres"]