Skip to content

Commit ded800a

Browse files
authored
Merge pull request #43 from cybertec-postgresql/fixUpgrade
Fix upgrade
2 parents 022f94d + fa75ae4 commit ded800a

File tree

4 files changed

+189
-10
lines changed

4 files changed

+189
-10
lines changed

Makefile

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ postgres-gis: base postgres-gis
3737
postgres-oracle: base postgres-oracle
3838
pgbouncer: pgbouncer
3939
exporter: exporter
40-
publicbeta: publicbeta
40+
publicbeta: publicbeta-pg publicbeta-pgbackrest
4141

4242
base-build:
43-
docker build $(ROOTPATH) --no-cache \
43+
docker build $(ROOTPATH) \
4444
--file $(ROOTPATH)/docker/base/Dockerfile \
4545
--tag cybertec-pg-container/base:$(BASEOS)-$(BUILD) \
4646
--build-arg BASE_IMAGE=$(BASE_IMAGE) \
@@ -174,7 +174,7 @@ exporter-build:
174174

175175
exporter: exporter-build
176176

177-
publicbeta-build:
177+
publicbeta-pg-build:
178178
docker build $(ROOTPATH) \
179179
--file $(ROOTPATH)/docker/pg-public-beta/Dockerfile \
180180
--tag cybertec-pg-container/postgres:$(IMAGE_TAG)-beta${PUBLICBETA} \
@@ -191,4 +191,21 @@ publicbeta-build:
191191
--build-arg PGVERSION=$(BETAVERSION) \
192192
--build-arg ARCH=$(ARCH)
193193

194-
publicbeta: publicbeta-build
194+
publicbeta-pg: publicbeta-pg-build
195+
196+
publicbeta-pgbackrest-build:
197+
docker build $(ROOTPATH) \
198+
--file $(ROOTPATH)/docker/pgbackrest-public-beta/Dockerfile \
199+
--tag cybertec-pg-container/pgbackrest:$(IMAGE_TAG)-beta${PUBLICBETA} \
200+
--build-arg BASE_IMAGE=$(BASE_IMAGE) \
201+
--build-arg CONTAINERIMAGE=${CONTAINERIMAGE} \
202+
--build-arg IMAGE_REPOSITORY=$(IMAGE_REPOSITORY) \
203+
--build-arg BASEOS=$(BASEOS) \
204+
--build-arg PACKAGER=$(PACKAGER) \
205+
--build-arg CONTAINERSUITE=$(CONTAINERSUITE) \
206+
--build-arg BUILD=$(BUILD) \
207+
--build-arg PGBACKREST_VERSION=$(PGBACKREST_VERSION) \
208+
--build-arg OLD_PG_VERSIONS="$(OLD_PG_VERSIONS)" \
209+
--build-arg PGVERSION=$(BETAVERSION)
210+
211+
publicbeta-pgbackrest: publicbeta-pgbackrest-build;
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
ARG CONTAINERSUITE
2+
ARG BUILD
3+
ARG BASEOS
4+
ARG CONTAINERIMAGE
5+
6+
FROM ${CONTAINERSUITE}/base:${BASEOS}-${BUILD} AS builder
7+
8+
# Dockerfile specific informations
9+
ARG PACKAGER
10+
ARG PGBACKREST_VERSION
11+
ARG PGVERSION
12+
ARG OLD_PG_VERSIONS
13+
ARG PG_SUPPORTED_VERSIONS="$OLD_PG_VERSIONS $PGVERSION"
14+
15+
# Enable Beta-Repo
16+
RUN ${PACKAGER} config-manager --set-enabled pgdg${PGVERSION}-updates-testing \
17+
&& ${PACKAGER} config-manager --set-enabled pgdg${PGVERSION}-source-updates-testing \
18+
&& ${PACKAGER} -y update;
19+
20+
RUN ${PACKAGER} -y install --nodocs \
21+
--setopt=skip_missing_names_on_install=False \
22+
openssh-clients \
23+
openssh-server \
24+
bzip2 \
25+
lz4 \
26+
zstd \
27+
libicu \
28+
dumb-init \
29+
jq \
30+
pgbackrest-${PGBACKREST_VERSION} \
31+
&& ${PACKAGER} -y clean all ;
32+
33+
# Install postgres-server
34+
RUN ${PACKAGER} -y update \
35+
&& for version in $PG_SUPPORTED_VERSIONS; do \
36+
${PACKAGER} -y install --nodocs postgresql${version}-server; \
37+
done \
38+
&& ${PACKAGER} -y clean all;
39+
40+
# Remove default pgbackrest-config
41+
RUN rm /etc/pgbackrest.conf
42+
RUN rm -rf /var/spool/pgbackrest
43+
44+
# Add kubectl
45+
RUN curl -LO https://dl.k8s.io/release/v1.30.0/bin/linux/amd64/kubectl && chmod +x kubectl
46+
47+
RUN mkdir -p /tmp/pgsql && cp -r /usr/pgsql* /tmp/pgsql
48+
RUN mkdir -p /tmp/pg && cp -r /usr/bin/pg* /tmp/pg
49+
RUN mkdir -p /tmp/lz4 && cp -r /usr/bin/lz4* /tmp/lz4
50+
RUN mkdir -p /tmp/zstd && cp -r /usr/bin/zstd* /tmp/zstd
51+
52+
53+
FROM ${CONTAINERIMAGE} as micro
54+
55+
ARG PGVERSION
56+
57+
COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init
58+
COPY --from=builder /etc/passwd /etc/passwd
59+
COPY --from=builder /etc/group /etc/group
60+
COPY --from=builder /usr/lib64 /usr/lib64
61+
# SSH-client
62+
COPY --from=builder /etc/ssh /etc/ssh
63+
COPY --from=builder /usr/bin/ssh /usr/bin/ssh
64+
COPY --from=builder /usr/libexec/openssh /usr/libexec/openssh
65+
# pgBackRest
66+
COPY --from=builder /usr/bin/pgbackrest /usr/bin/pgbackrest
67+
COPY --from=builder /usr/share/licenses/pgbackrest/LICENSE /usr/share/licenses/pgbackrest/LICENSE
68+
COPY --from=builder /var/lib/pgbackrest /var/lib/pgbackrest
69+
COPY --from=builder /var/log/pgbackrest /var/log/pgbackrest
70+
# Postgres
71+
COPY --from=builder /tmp/pgsql/ /usr/
72+
COPY --from=builder /var/lib/pgsql /var/lib/pgsql
73+
COPY --from=builder /tmp/pg /usr/bin/
74+
75+
COPY --from=builder ./kubectl /usr/local/bin/
76+
# lz4
77+
COPY --from=builder /tmp/lz4 /usr/bin/
78+
# zstd
79+
COPY --from=builder /tmp/zstd /usr/bin/
80+
# Others
81+
COPY --from=builder /usr/bin/sed /usr/bin/sed
82+
COPY --from=builder /usr/bin/jq /usr/bin/jq
83+
COPY --from=builder /usr/bin/watch /usr/bin/watch
84+
COPY --from=builder /usr/share/locale /usr/share/locale
85+
COPY --from=builder /usr/lib /usr/lib
86+
COPY --from=builder /usr/lib64 /usr/lib64
87+
# CA
88+
COPY --from=builder /usr/bin/ca-legacy /usr/bin/ca-legacy
89+
COPY --from=builder /usr/bin/update-ca-trust /usr/bin/update-ca-trust
90+
# grep
91+
COPY --from=builder /etc/profile.d /etc/profile.d
92+
COPY --from=builder /usr/bin/grep /usr/bin/grep
93+
COPY --from=builder /usr/libexec /usr/libexec
94+
# COPY --from=builder /usr/bin/update-ca-trust /usr/bin/update-ca-trust
95+
# COPY --from=builder /usr/bin/update-ca-trust /usr/bin/update-ca-trust
96+
97+
# p11-kit
98+
COPY --from=builder /etc/pkcs11 /etc/pkcs11
99+
COPY --from=builder /usr/libexec/p11-kit /usr/libexec/p11-kit
100+
COPY --from=builder /usr/share/bash-completion/completions /usr/share/bash-completion/completions
101+
COPY --from=builder /usr/share/p11-kit /usr/share/p11-kit
102+
COPY --from=builder /usr/share/polkit-1 /usr/share/polkit-1
103+
104+
COPY --from=builder /usr/bin/p11-kit /usr/bin/p11-kit
105+
COPY --from=builder /etc/pki /etc/pki
106+
COPY --from=builder /usr/share/pki /usr/share/pki
107+
COPY --from=builder /etc/ssl /etc/ssl
108+
COPY --from=builder /etc/pkcs11 /etc/pkcs11
109+
110+
# p11-kit-trust
111+
COPY --from=builder /usr/bin/trust /usr/bin/
112+
113+
# libraries
114+
COPY --from=builder /usr/bin/nss_wrapper.pl /usr/bin/nss_wrapper.pl
115+
# COPY --from=builder /usr/lib64/libnss_wrapper.so /usr/lib64/libnss_wrapper.so
116+
COPY --from=builder /usr/share/man/man1 /usr/share/man/man1
117+
COPY --from=builder /usr/bin/envsubst /usr/bin/envsubst
118+
119+
RUN /usr/bin/update-ca-trust extract
120+
121+
# add postgres user and group
122+
#RUN groupadd postgres -g 26 && useradd postgres -u 26 -g 26
123+
124+
# Prepare all needed stuff
125+
Run mkdir -p /opt/pgbackrest /backrestrepo /home/postgres /home/postgres/pgdata/pgbackrest/log
126+
127+
# add pgbackrest-restore files
128+
ADD scripts/pgbackrest/ /opt/pgbackrest/bin/
129+
130+
# add pgbackrest-common files
131+
ADD /scripts/nss_wrapper /scripts/nss_wrapper
132+
133+
FROM scratch
134+
COPY --from=micro / /
135+
136+
ARG PGVERSION
137+
138+
# set user and group ownership
139+
RUN chown -R postgres:postgres /opt/pgbackrest \
140+
/backrestrepo /home/postgres/pgdata/pgbackrest /home/postgres/pgdata
141+
142+
RUN mkdir -p /etc/pgbackrest \
143+
&& chown -R postgres:postgres /etc/pgbackrest
144+
145+
RUN chmod -R g=u /etc/pgbackrest \
146+
&& rm -f /run/nologin
147+
148+
RUN mkdir /.ssh && chown postgres:postgres /.ssh && chmod o+rwx /.ssh
149+
150+
# set user and group ownership
151+
RUN chown -R postgres:postgres /opt/pgbackrest \
152+
/backrestrepo /home/postgres/pgdata
153+
154+
#ENV PATH=$PATH:/usr/pgsql-$PGVERSION/bin
155+
COPY launcher/pgbackrest/launch.sh /
156+
157+
VOLUME ["sshd", "/home/postgres/pgdata", "/backrestrepo"]
158+
159+
ENTRYPOINT ["/scripts/nss_wrapper/nss_wrapper.sh"]
160+
161+
USER 26
162+
163+
CMD ["dumb-init", "/launch.sh", "init"]

major_upgrade/pg_upgrade.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def drop_possibly_incompatible_objects(self):
9393
# cur.execute(cmd)
9494

9595
logger.info('Executing "DROP FUNCTION metric_helpers.pg_stat_statements" in the database="%s"', d)
96-
function call dur cur.execute("DROP FUNCTION IF EXISTS metric_helpers.pg_stat_statements(boolean) CASCADE")
96+
cur.execute("DROP FUNCTION IF EXISTS metric_helpers.pg_stat_statements(boolean) CASCADE")
9797

9898
for ext in ('pg_stat_kcache', 'pg_stat_statements') + self._INCOMPATIBLE_EXTENSIONS:
9999
logger.info('Executing "DROP EXTENSION IF EXISTS %s" in the database="%s"', ext, d)
@@ -187,10 +187,10 @@ def pg_upgrade(self, check=False):
187187

188188
def prepare_new_pgdata(self, version):
189189
from spilo_commons import append_extensions
190-
191-
locale = self.query('SHOW lc_collate')[0][0]
192-
encoding = self.query('SHOW server_encoding')[0][0]
193-
initdb_config = [{'locale': locale}, {'encoding': encoding}]
190+
191+
locale = self.query("SELECT datcollate FROM pg_database WHERE datname = 'template1'")[0][0]
192+
# encoding = self.query('SHOW server_encoding')[0][0]
193+
initdb_config = [{'locale': locale}, {'locale-provider': 'icu'}]
194194
if self.query("SELECT current_setting('data_checksums')::bool")[0][0]:
195195
initdb_config.append('data-checksums')
196196

scripts/configure_spilo.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,6 @@ def deep_update(a, b):
255255
--port={{CLONE_PORT}} --user="{{CLONE_USER}}"
256256
{{/CLONE_WITH_BASEBACKUP}}
257257
initdb:
258-
- encoding: UTF8
259258
- locale: {{INITDB_LOCALE}}.UTF-8
260259
- data-checksums
261260
- locale-provider: icu

0 commit comments

Comments
 (0)