瀏覽代碼

BREAKING feat(dbapi): bump Postgres to 16

Manual database upgrade required. Details:
https://www.postgresql.org/docs/13/upgrading.html

For us, this means:

cd /usr/local/src/desec-stack/
docker-compose stop api celery
docker-compose exec dbapi pg_dumpall > outputfile  # ~2s
docker-compose stop dbapi
cp -a /var/lib/docker/volumes/desec*_dbapi_postgres postgres-volume.bak
docker-compose rm -f dbapi
docker volume rm desec-stack_dbapi_postgres  # hyphen may not be required
git pull && docker-compose pull
docker-compose up -d dbapi

...  wait a few seconds for dbapi init to finish ...

cat outputfile | docker-compose exec -T dbapi psql -d postgres  # ~3s
docker-compose up -d

... if all went well:
rm -f outputfile postgres-volume.bak/
Peter Thomassen 1 年之前
父節點
當前提交
93e5d115d7
共有 2 個文件被更改,包括 2 次插入1 次删除
  1. 1 1
      dbapi/Dockerfile
  2. 1 0
      dbapi/docker-entrypoint-initdb.d/init-user-db.sh

+ 1 - 1
dbapi/Dockerfile

@@ -1,4 +1,4 @@
-FROM postgres:13-alpine
+FROM postgres:16-alpine
 
 
 RUN apk add --no-cache pwgen
 RUN apk add --no-cache pwgen
 
 

+ 1 - 0
dbapi/docker-entrypoint-initdb.d/init-user-db.sh

@@ -8,6 +8,7 @@ if [ -n $POSTGRES_DB ]; then pg_db=$POSTGRES_DB; else pg_db=$POSTGRES_USER; fi
 
 
 if [ -n "$POSTGRES_NON_ROOT_USER" ]; then
 if [ -n "$POSTGRES_NON_ROOT_USER" ]; then
 psql -v ON_ERROR_STOP=1 --username "$pg_user" --dbname "$pg_db" <<-EOSQL
 psql -v ON_ERROR_STOP=1 --username "$pg_user" --dbname "$pg_db" <<-EOSQL
+    GRANT CREATE ON SCHEMA public TO PUBLIC;
     CREATE USER $POSTGRES_NON_ROOT_USER with encrypted password '$POSTGRES_NON_ROOT_USER_PASSWORD';
     CREATE USER $POSTGRES_NON_ROOT_USER with encrypted password '$POSTGRES_NON_ROOT_USER_PASSWORD';
     GRANT CREATE, CONNECT ON DATABASE $pg_db TO $POSTGRES_NON_ROOT_USER;
     GRANT CREATE, CONNECT ON DATABASE $pg_db TO $POSTGRES_NON_ROOT_USER;
     ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, UPDATE, INSERT, DELETE, REFERENCES ON TABLES TO $POSTGRES_NON_ROOT_USER;
     ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, UPDATE, INSERT, DELETE, REFERENCES ON TABLES TO $POSTGRES_NON_ROOT_USER;