11ARG CONTAINERSUITE
22ARG BUILD
33ARG BASEOS
4+ ARG CONTAINERIMAGE
45
5- FROM ${CONTAINERSUITE}/base:${BASEOS}-${BUILD}
6+ FROM ${CONTAINERSUITE}/base:${BASEOS}-${BUILD} AS builder
67
78# Dockerfile specific informations
89ARG PACKAGER
910ARG PGBACKREST_VERSION
1011ARG PGVERSION
1112ARG OLD_PG_VERSIONS
12- # ARG PG_SUPPORTED_VERSIONS="$PGVERSION"
1313ARG PG_SUPPORTED_VERSIONS="$OLD_PG_VERSIONS $PGVERSION"
1414
15- RUN if [ "$BASEOS" = "ubi8" ] ; then \
16- ${PACKAGER} -y install --nodocs \
17- openssh-clients \
18- openssh-server \
19- shadow-utils \
20- tar \
21- bzip2 \
22- lz4 \
23- dumb-init \
24- pgbackrest-${PGBACKREST_VERSION} \
25- && ${PACKAGER} -y clean all ; \
26- else \
27- ${PACKAGER} -y install --nodocs \
15+ RUN ${PACKAGER} -y install --nodocs \
2816 --setopt=skip_missing_names_on_install=False \
2917 openssh-clients \
3018 openssh-server \
3119 bzip2 \
3220 lz4 \
33- # postgresql${PGVERSION}-server \
21+ zstd \
22+ libicu \
3423 dumb-init \
24+ jq \
3525 pgbackrest-${PGBACKREST_VERSION} \
36- && ${PACKAGER} -y clean all ; \
37- fi
26+ && ${PACKAGER} -y clean all ;
3827
3928# Install postgres-server
4029RUN ${PACKAGER} -y update \
@@ -47,6 +36,55 @@ RUN ${PACKAGER} -y update \
4736RUN rm /etc/pgbackrest.conf
4837RUN rm -rf /var/spool/pgbackrest
4938
39+ # Add kubectl
40+ RUN curl -LO https://dl.k8s.io/release/v1.30.0/bin/linux/amd64/kubectl && chmod +x kubectl
41+
42+ FROM ${CONTAINERIMAGE} as micro
43+
44+ ARG PGVERSION
45+
46+ COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init
47+ COPY --from=builder /etc/passwd /etc/passwd
48+ COPY --from=builder /etc/group /etc/group
49+ COPY --from=builder /usr/lib64 /usr/lib64
50+ # SSH-client
51+ COPY --from=builder /etc/ssh /etc/ssh
52+ COPY --from=builder /usr/bin/ssh /usr/bin/ssh
53+ COPY --from=builder /usr/libexec/openssh /usr/libexec/openssh
54+ # pgBackRest
55+ COPY --from=builder /usr/bin/pgbackrest /usr/bin/pgbackrest
56+ COPY --from=builder /usr/share/licenses/pgbackrest/LICENSE /usr/share/licenses/pgbackrest/LICENSE
57+ COPY --from=builder /var/lib/pgbackrest /var/lib/pgbackrest
58+ COPY --from=builder /var/log/pgbackrest /var/log/pgbackrest
59+ # Postgres
60+ COPY --from=builder /var/lib/pgsql /var/lib/pgsql
61+ COPY --from=builder ./kubectl /usr/local/bin/
62+ # lz4
63+ COPY --from=builder /usr/bin/lz4* /usr/bin/lz4*
64+ # zstd
65+ COPY --from=builder /usr/bin/zstd* /usr/bin/zstd*
66+ # Others
67+ COPY --from=builder /usr/bin/sed /usr/bin/sed
68+ COPY --from=builder /usr/bin/jq /usr/bin/jq
69+ COPY --from=builder /usr/bin/watch /usr/bin/watch
70+ COPY --from=builder /usr/share/locale /usr/share/locale
71+ COPY --from=builder /usr/lib /usr/lib
72+ COPY --from=builder /usr/lib64 /usr/lib64
73+ # PostgreSQL
74+ # TODO: implement a method that works with $PG_SUPPORTED_VERSIONS
75+ COPY --from=builder /usr/pgsql-13 /usr/pgsql-13
76+ COPY --from=builder /usr/pgsql-14 /usr/pgsql-14
77+ COPY --from=builder /usr/pgsql-15 /usr/pgsql-15
78+ COPY --from=builder /usr/pgsql-16 /usr/pgsql-16
79+ COPY --from=builder /var/lib/pgsql /var/lib/pgsql
80+ COPY --from=builder /usr/bin/pg_* /usr/bin/
81+
82+ # libraries
83+ COPY --from=builder /usr/bin/nss_wrapper.pl /usr/bin/nss_wrapper.pl
84+ # COPY --from=builder /usr/lib64/libnss_wrapper.so /usr/lib64/libnss_wrapper.so
85+ COPY --from=builder /usr/share/man/man1 /usr/share/man/man1
86+ COPY --from=builder /usr/bin/envsubst /usr/bin/envsubst
87+
5088# add postgres user and group
5189# RUN groupadd postgres -g 26 && useradd postgres -u 26 -g 26
5290
@@ -59,6 +97,9 @@ ADD scripts/pgbackrest/ /opt/pgbackrest/bin/
5997# add pgbackrest-common files
6098ADD /scripts/nss_wrapper /scripts/nss_wrapper
6199
100+ FROM scratch
101+ COPY --from=micro / /
102+
62103# set user and group ownership
63104RUN chown -R postgres:postgres /opt/pgbackrest \
64105 /backrestrepo /home/postgres/pgdata/pgbackrest /home/postgres/pgdata
@@ -71,9 +112,6 @@ RUN chmod -R g=u /etc/pgbackrest \
71112
72113RUN mkdir /.ssh && chown postgres:postgres /.ssh && chmod o+rwx /.ssh
73114
74- # Add kubectl
75- RUN curl -LO https://dl.k8s.io/release/v1.26.0/bin/linux/amd64/kubectl && chmod +x kubectl && mv ./kubectl /usr/local/bin/
76-
77115# set user and group ownership
78116RUN chown -R postgres:postgres /opt/pgbackrest \
79117 /backrestrepo /home/postgres/pgdata
@@ -88,3 +126,4 @@ ENTRYPOINT ["/scripts/nss_wrapper/nss_wrapper.sh"]
88126USER 26
89127
90128CMD ["dumb-init" , "/launch.sh" , "init" ]
129+
0 commit comments