Skip to content

Commit 9264a56

Browse files
committed
fix data dir permissions.
1 parent e091e1f commit 9264a56

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

Diff for: Dockerfile

+7-9
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ RUN apk add --no-cache --virtual .build-deps gcc g++ make wget pkgconf dpkg-dev
2424
bzip2-dev zlib-dev libuuid linux-headers \
2525
tzdata yaml-dev util-linux-dev && \
2626
apk add --no-cache git bash python3 py3-pip icu libxml2 lz4-dev zstd-dev \
27-
postgresql-dev shadow && \
27+
postgresql-dev shadow su-exec && \
2828
# configure dependencies
2929
ln -sf python3 /usr/bin/python && \
3030
mkdir -p /downloads && \
@@ -53,17 +53,15 @@ RUN apk add --no-cache --virtual .build-deps gcc g++ make wget pkgconf dpkg-dev
5353
apk del --no-network .build-deps
5454

5555
# configure file and folder permissions
56-
RUN chmod 755 /usr/bin/pgbackrest && \
57-
mkdir -p /var/log/pgbackrest && chown -R $PGUSER:$PGUSER /var/log/pgbackrest && chmod 750 /var/log/pgbackrest && \
58-
mkdir -p /var/lib/pgbackrest && chown -R $PGUSER:$PGUSER /var/lib/pgbackrest && chmod 750 /var/lib/pgbackrest && \
59-
mkdir -p /var/spool/pgbackrest && chown -R $PGUSER:$PGUSER /var/spool/pgbackrest && chmod 750 /var/spool/pgbackrest && \
60-
mkdir -p /var/run/postgresql && chown -R $PGUSER:$PGUSER /var/run/postgresql && chmod 775 /var/run/postgresql && \
61-
mkdir -p $PGDATA && chown -R $PGUSER:$PGUSER $PGDATA && chmod 750 $PGDATA
56+
RUN chmod -R 755 /usr/bin/pgbackrest && \
57+
mkdir -p /var/log/pgbackrest && chown -R $PGUSER:$PGUSER /var/log/pgbackrest && chmod -R 750 /var/log/pgbackrest && \
58+
mkdir -p /var/lib/pgbackrest && chown -R $PGUSER:$PGUSER /var/lib/pgbackrest && chmod -R 750 /var/lib/pgbackrest && \
59+
mkdir -p /var/spool/pgbackrest && chown -R $PGUSER:$PGUSER /var/spool/pgbackrest && chmod -R 750 /var/spool/pgbackrest && \
60+
mkdir -p /var/run/postgresql && chown -R $PGUSER:$PGUSER /var/run/postgresql && chmod -R 775 /var/run/postgresql && \
61+
mkdir -p $PGDATA && chown -R $PGUSER:$PGUSER $PGDATA && chmod -R 750 $PGDATA
6262

6363
STOPSIGNAL SIGINT
6464

65-
USER $PGUSER
66-
6765
# start database service
6866
ENV PATH=/usr/local/pgsql/bin:$PATH
6967
ENTRYPOINT ["/entrypoint.sh"]

Diff for: entrypoint.sh

+10-7
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
pgconf="$PGDATA/postgresql.conf"
44
hbaconf="$PGDATA/pg_hba.conf"
55

6+
mkdir -p /var/run/postgresql && chown -R $PGUSER:$PGUSER /var/run/postgresql && chmod -R 775 /var/run/postgresql
7+
mkdir -p $PGDATA && chown -R $PGUSER:$PGUSER $PGDATA && chmod -R 750 $PGDATA
8+
69
# create db cluster if it's not exist
710
if [[ ! -f $PGDATA/PG_VERSION ]]; then
8-
initdb --encoding=UTF8 --locale=C -D $PGDATA
11+
su-exec $PGUSER initdb --encoding=UTF8 --locale=C -D $PGDATA
912

1013
echo "listen_addresses = '*'" >> $pgconf
1114
echo "port = $PGPORT" >> $pgconf
@@ -18,7 +21,7 @@ fi
1821

1922
# init pgbackrest
2023
if ! grep -q "pgbackrest" "$pgconf"; then
21-
pg_ctl start -o "-p $PGPORT -k /var/run/postgresql" -D $PGDATA
24+
su-exec $PGUSER pg_ctl start -o "-p $PGPORT -k /var/run/postgresql" -D $PGDATA
2225

2326
echo "wal_level = replica" >> $pgconf
2427
echo "max_wal_size = 1GB" >> $pgconf
@@ -29,19 +32,19 @@ if ! grep -q "pgbackrest" "$pgconf"; then
2932
echo "log_line_prefix = ''" >> $pgconf
3033
echo "log_timezone = 'Etc/UTC'" >> $pgconf
3134

32-
pgbackrest --stanza=app --pg1-port=$PGPORT --log-level-console=info stanza-create
33-
pg_ctl restart -o "-p $PGPORT -k /var/run/postgresql" -D $PGDATA
35+
su-exec $PGUSER pgbackrest --stanza=app --pg1-port=$PGPORT --log-level-console=info stanza-create
36+
su-exec $PGUSER pg_ctl restart -o "-p $PGPORT -k /var/run/postgresql" -D $PGDATA
3437

35-
pgbackrest --stanza=app --pg1-port=$PGPORT --log-level-console=info check
38+
su-exec $PGUSER pgbackrest --stanza=app --pg1-port=$PGPORT --log-level-console=info check
3639
pgbackrest_check_result=$?
3740

3841
if [ $pgbackrest_check_result -ne 0 ]; then
3942
echo "pgbackrest check failed."
4043
exit $pgbackrest_check_result
4144
fi
4245

43-
pg_ctl stop -o "-p $PGPORT -k /var/run/postgresql" -D $PGDATA
46+
su-exec $PGUSER pg_ctl stop -o "-p $PGPORT -k /var/run/postgresql" -D $PGDATA
4447
fi
4548

4649
# start postgresql server
47-
"$@"
50+
su-exec $PGUSER "$@"

0 commit comments

Comments
 (0)