FEATURE: Update base image and set default to postgresql 15 (#909)
This updates the default PostgreSQL version to 15. * image/base: update default postgres version to 15 * launcher: bump base image to include postgres 15 * postgres.template.yml: update default version to 15 * postgres.15.template.yml: current version template Legacy version templates: * postgres.13.template.yml * postgres.12.template.yml * postgres.10.template.yml * postgres.9.5.template.yml
This commit is contained in:
parent
92ac6cbc9b
commit
d9c837c783
11 changed files with 149 additions and 185 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -13,6 +13,7 @@ image/squash.tar
|
|||
image/nsenter/nsenter
|
||||
image/docker-squash
|
||||
image/docker-squash.tar.gz
|
||||
image/discourse_dev/install-rust
|
||||
image/discourse_dev/postgres.template.yml
|
||||
image/discourse_dev/redis.template.yml
|
||||
.gc-state/*
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
To build a new image, just run `ruby auto_build.rb image-name`. The build process will build a local image with a predefined tag.
|
||||
|
||||
Images and tag names are defined [here](https://github.com/discourse/discourse_docker/blob/master/image/auto_build.rb#L6-L11).
|
||||
Images and tag names are defined [here](https://github.com/discourse/discourse_docker/blob/main/image/auto_build.rb#L6-L88).
|
||||
|
||||
> **A note about --squash**: By default we squash the images we serve on Docker Hub. You will need to [enable experimental features](https://github.com/docker/docker-ce/blob/master/components/cli/experimental/README.md) on your Docker daemon for that.
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ RUN gpg --import /tmp/nginx_public_keys.key &&\
|
|||
FROM discourse/ruby:3.3.6-${DEBIAN_RELEASE}-slim AS discourse_dependencies
|
||||
|
||||
ARG DEBIAN_RELEASE
|
||||
ARG PG_MAJOR=13
|
||||
ARG PG_MAJOR=15
|
||||
ENV PG_MAJOR=${PG_MAJOR} \
|
||||
RUBY_ALLOCATOR=/usr/lib/libjemalloc.so \
|
||||
LEFTHOOK=0 \
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
run:
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
from: /#?fullpage_writes *=.*/
|
||||
to: "fullpage_writes = off"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?full_page_writes *=.*/
|
||||
to: "full_page_writes = off"
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?fsync *=.*/
|
||||
to: "fsync = off"
|
||||
|
||||
|
@ -14,7 +14,7 @@ run:
|
|||
background: true
|
||||
# use fast shutdown for pg
|
||||
stop_signal: INT
|
||||
cmd: HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
|
||||
cmd: HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
|
||||
|
||||
- exec:
|
||||
background: true
|
||||
|
|
2
launcher
2
launcher
|
@ -92,7 +92,7 @@ kernel_min_version='4.4.0'
|
|||
config_file=containers/"$config".yml
|
||||
cidbootstrap=cids/"$config"_bootstrap.cid
|
||||
local_discourse=local_discourse
|
||||
image="discourse/base:2.0.20250114-0014"
|
||||
image="discourse/base:2.0.20250127-0958-pg-15"
|
||||
docker_path=`which docker.io 2> /dev/null || which docker`
|
||||
git_path=`which git`
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ hooks:
|
|||
to: sv start postgres || exit 1
|
||||
|
||||
run:
|
||||
- exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-13 postgresql-client-13 postgresql-contrib-13
|
||||
- exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-15 postgresql-client-15 postgresql-contrib-15
|
||||
- exec: apt-get update && apt-get install -y postgresql-10 postgresql-client-10 postgresql-contrib-10
|
||||
- exec: mkdir -p /shared/postgres_run
|
||||
- exec: chown postgres:postgres /shared/postgres_run
|
||||
|
@ -141,6 +141,7 @@ run:
|
|||
- exec: su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists hstore;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists unaccent;"'
|
||||
- exec:
|
||||
stdin: |
|
||||
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = '$db_name' AND encoding = pg_char_to_encoding('SQL_ASCII');
|
||||
|
|
|
@ -17,7 +17,7 @@ hooks:
|
|||
to: sv start postgres || exit 1
|
||||
|
||||
run:
|
||||
- exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-13 postgresql-client-13 postgresql-contrib-13
|
||||
- exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-15 postgresql-client-15 postgresql-contrib-15
|
||||
- exec: apt-get update && apt-get install -y postgresql-12 postgresql-client-12 postgresql-contrib-12
|
||||
- exec: mkdir -p /shared/postgres_run
|
||||
- exec: chown postgres:postgres /shared/postgres_run
|
||||
|
@ -140,6 +140,7 @@ run:
|
|||
- exec: su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists hstore;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists unaccent;"'
|
||||
- exec:
|
||||
stdin: |
|
||||
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = '$db_name' AND encoding = pg_char_to_encoding('SQL_ASCII');
|
||||
|
|
|
@ -14,21 +14,16 @@ hooks:
|
|||
- replace:
|
||||
filename: /etc/service/unicorn/run
|
||||
from: "# postgres"
|
||||
to: sv start postgres || exit 1
|
||||
to: |
|
||||
if [ -f /root/install_postgres ]; then
|
||||
/root/install_postgres
|
||||
rm /root/install_postgres
|
||||
fi
|
||||
sv start postgres || exit 1
|
||||
|
||||
run:
|
||||
- exec: sed -i "s/^# $LANG/$LANG/" /etc/locale.gen
|
||||
- exec: locale-gen && update-locale
|
||||
- exec: mkdir -p /shared/postgres_run
|
||||
- exec: chown postgres:postgres /shared/postgres_run
|
||||
- exec: chmod 775 /shared/postgres_run
|
||||
- exec: rm -fr /var/run/postgresql
|
||||
- exec: ln -s /shared/postgres_run /var/run/postgresql
|
||||
- exec: socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
|
||||
- exec: rm -fr /shared/postgres_run/.s*
|
||||
- exec: rm -fr /shared/postgres_run/*.pid
|
||||
- exec: mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
|
||||
- exec: chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
|
||||
- exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-15 postgresql-client-15 postgresql-contrib-15 postgresql-15-pgvector
|
||||
- exec: apt-get update && apt-get install -y postgresql-13 postgresql-client-13 postgresql-contrib-13 postgresql-13-pgvector
|
||||
- file:
|
||||
path: /etc/service/postgres/run
|
||||
chmod: "+x"
|
||||
|
@ -53,79 +48,30 @@ run:
|
|||
sv stop postgres
|
||||
|
||||
- file:
|
||||
path: /root/upgrade_postgres
|
||||
chmod: "+x"
|
||||
contents: |
|
||||
#!/bin/bash
|
||||
PG_MAJOR_OLD=`cat /shared/postgres_data/PG_VERSION`
|
||||
|
||||
if [ ! "13" = "$PG_MAJOR_OLD" ]; then
|
||||
echo Upgrading PostgreSQL from version ${PG_MAJOR_OLD} to 13
|
||||
free_disk=$(df -P -B1 /shared | tail -n 1 | awk '{print $4}')
|
||||
required=$(($(du -sb /shared/postgres_data | awk '{print $1}') * 2))
|
||||
|
||||
if [ "$free_disk" -lt "$required" ]; then
|
||||
echo "WARNING: Upgrading PostgreSQL would require an additional $(numfmt --to=si $(($required - $free_disk))) of disk space"
|
||||
echo "Please free up some space, or expand your disk, before continuing."
|
||||
echo ''
|
||||
echo 'To avoid upgrading change "templates/postgres.template.yml" TO "templates/postgres.12.template.yml" in containers/app.yml'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d /shared/postgres_data_old ]; then
|
||||
mv /shared/postgres_data_old /shared/postgres_data_older
|
||||
fi
|
||||
|
||||
rm -fr /shared/postgres_data_new
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_data_new && sudo -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data_new || exit 0
|
||||
apt-get update
|
||||
apt-get install -y postgresql-${PG_MAJOR_OLD}
|
||||
chown -R postgres:postgres /var/lib/postgresql/13
|
||||
/etc/init.d/postgresql stop
|
||||
rm -fr /shared/postgres_data/postmaster.pid
|
||||
cd ~postgres
|
||||
cp -pr /etc/postgresql/${PG_MAJOR_OLD}/main/* /shared/postgres_data
|
||||
echo >> /shared/postgres_data/postgresql.conf
|
||||
echo "data_directory = '/shared/postgres_data'" >> /shared/postgres_data/postgresql.conf
|
||||
SUCCESS=true
|
||||
sudo -u postgres /usr/lib/postgresql/13/bin/pg_upgrade -d /shared/postgres_data -D /shared/postgres_data_new -b /usr/lib/postgresql/${PG_MAJOR_OLD}/bin -B /usr/lib/postgresql/13/bin || SUCCESS=false
|
||||
|
||||
if [[ "$SUCCESS" == 'false' ]]; then
|
||||
echo -------------------------------------------------------------------------------------
|
||||
echo UPGRADE OF POSTGRES FAILED
|
||||
echo
|
||||
echo Please visit https://meta.discourse.org/t/postgresql-13-update/172563 for support.
|
||||
echo
|
||||
echo You can run "./launcher start app" to restart your app in the meanwhile
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mv /shared/postgres_data /shared/postgres_data_old
|
||||
mv /shared/postgres_data_new /shared/postgres_data
|
||||
|
||||
echo -------------------------------------------------------------------------------------
|
||||
echo UPGRADE OF POSTGRES COMPLETE
|
||||
echo
|
||||
echo Old ${PG_MAJOR_OLD} database is stored at /shared/postgres_data_old
|
||||
echo
|
||||
echo To complete the upgrade, rebuild again using:
|
||||
echo
|
||||
echo ./launcher rebuild app
|
||||
echo -------------------------------------------------------------------------------------
|
||||
# Magic exit status to denote no failure
|
||||
exit 77
|
||||
fi
|
||||
|
||||
- exec:
|
||||
cmd:
|
||||
- chown -R root /var/lib/postgresql/13/main
|
||||
- "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0"
|
||||
- chown -R postgres:postgres /shared/postgres_data
|
||||
- chown -R postgres:postgres /var/run/postgresql
|
||||
|
||||
- exec: /root/upgrade_postgres
|
||||
- exec: rm /root/upgrade_postgres
|
||||
path: /root/install_postgres
|
||||
chmod: "+x"
|
||||
contents: |
|
||||
#!/bin/bash -x
|
||||
sed -i "s/^# $LANG/$LANG/" /etc/locale.gen
|
||||
locale-gen && update-locale
|
||||
mkdir -p /shared/postgres_run
|
||||
chown postgres:postgres /shared/postgres_run
|
||||
chmod 775 /shared/postgres_run
|
||||
rm -fr /var/run/postgresql
|
||||
ln -s /shared/postgres_run /var/run/postgresql
|
||||
if [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
|
||||
socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
|
||||
fi
|
||||
rm -fr /shared/postgres_run/.s*
|
||||
rm -fr /shared/postgres_run/*.pid
|
||||
mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
|
||||
chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
|
||||
chown -R root /var/lib/postgresql/13/main
|
||||
[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
|
||||
chown -R postgres:postgres /shared/postgres_data
|
||||
chown -R postgres:postgres /var/run/postgresql
|
||||
# Necessary to enable backups
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
|
@ -162,11 +108,6 @@ run:
|
|||
from: /#?default_text_search_config *=.*/
|
||||
to: "default_text_search_config = '$db_default_text_search_config'"
|
||||
|
||||
# Necessary to enable backups
|
||||
- exec:
|
||||
cmd:
|
||||
- install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
from: /#?checkpoint_segments *=.*/
|
||||
|
@ -200,29 +141,39 @@ run:
|
|||
to: "host all all ::/0 md5"
|
||||
|
||||
- exec:
|
||||
tag: db
|
||||
cmd: |
|
||||
if [ -f /root/install_postgres ]; then
|
||||
/root/install_postgres && rm -f /root/install_postgres
|
||||
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
|
||||
socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
|
||||
fi
|
||||
|
||||
- exec:
|
||||
tag: db
|
||||
background: true
|
||||
# use fast shutdown for pg
|
||||
stop_signal: INT
|
||||
cmd: HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
|
||||
|
||||
# give db a few secs to start up
|
||||
- exec: "sleep 5"
|
||||
|
||||
- exec: su postgres -c 'createdb $db_name' || true
|
||||
- exec: su postgres -c 'psql $db_name -c "create user $db_user;"' || true
|
||||
- exec: su postgres -c 'psql $db_name -c "grant all privileges on database $db_name to $db_user;"' || true
|
||||
- exec: su postgres -c 'psql $db_name -c "alter schema public owner to $db_user;"'
|
||||
- exec: su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
|
||||
- exec: su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql template1 -c "create extension if not exists vector;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists hstore;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists vector;"'
|
||||
- exec:
|
||||
stdin: |
|
||||
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = '$db_name' AND encoding = pg_char_to_encoding('SQL_ASCII');
|
||||
cmd: sudo -u postgres psql $db_name
|
||||
raise_on_fail: false
|
||||
- file:
|
||||
path: /usr/local/bin/create_db
|
||||
chmod: +x
|
||||
contents: |
|
||||
#!/bin/bash
|
||||
su postgres -c 'createdb $db_name' || true
|
||||
su postgres -c 'psql $db_name -c "create user $db_user;"' || true
|
||||
su postgres -c 'psql $db_name -c "grant all privileges on database $db_name to $db_user;"' || true
|
||||
su postgres -c 'psql $db_name -c "alter schema public owner to $db_user;"'
|
||||
su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
|
||||
su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
|
||||
su postgres -c 'psql template1 -c "create extension if not exists vector;"'
|
||||
su postgres -c 'psql template1 -c "alter extension vector update;"' || true
|
||||
su postgres -c 'psql $db_name -c "create extension if not exists hstore;"'
|
||||
su postgres -c 'psql $db_name -c "create extension if not exists pg_trgm;"'
|
||||
su postgres -c 'psql $db_name -c "create extension if not exists vector;"'
|
||||
su postgres -c 'psql $db_name -c "alter extension vector update;"' || true
|
||||
sudo -u postgres psql $db_name <<< "update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = '$db_name' AND encoding = pg_char_to_encoding('SQL_ASCII');" || true
|
||||
|
||||
- file:
|
||||
path: /var/lib/postgresql/take-database-backup
|
||||
|
@ -243,5 +194,10 @@ run:
|
|||
#0 */4 * * * /var/lib/postgresql/take-database-backup
|
||||
|
||||
- exec:
|
||||
tag: db
|
||||
hook: postgres
|
||||
cmd: "echo postgres installed!"
|
||||
cmd:
|
||||
# give db a few secs to start up
|
||||
- "sleep 5"
|
||||
- /usr/local/bin/create_db
|
||||
- "echo postgres installed!"
|
||||
|
|
|
@ -22,8 +22,6 @@ hooks:
|
|||
sv start postgres || exit 1
|
||||
|
||||
run:
|
||||
- exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-13 postgresql-client-13 postgresql-contrib-13 postgresql-13-pgvector
|
||||
- exec: apt-get update && apt-get install -y postgresql-15 postgresql-client-15 postgresql-contrib-15 postgresql-15-pgvector
|
||||
- file:
|
||||
path: /etc/service/postgres/run
|
||||
chmod: "+x"
|
||||
|
@ -67,12 +65,15 @@ run:
|
|||
mkdir -p /shared/postgres_run/15-main.pg_stat_tmp
|
||||
chown postgres:postgres /shared/postgres_run/15-main.pg_stat_tmp
|
||||
chown -R root /var/lib/postgresql/15/main
|
||||
[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/15/bin/initdb -D /shared/postgres_data || exit 0
|
||||
chown -R postgres:postgres /shared/postgres_data
|
||||
chown -R postgres:postgres /var/run/postgresql
|
||||
if [ -f /root/upgrade_postgres ]; then
|
||||
/root/upgrade_postgres
|
||||
rm /root/upgrade_postgres
|
||||
if [ ! -e /shared/postgres_data ]; then
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_data
|
||||
sudo -E -u postgres /usr/lib/postgresql/15/bin/initdb -D /shared/postgres_data
|
||||
chown -R postgres:postgres /shared/postgres_data
|
||||
chown -R postgres:postgres /var/run/postgresql
|
||||
elif [ -f /root/upgrade_postgres ]; then
|
||||
unset RETCODE
|
||||
/root/upgrade_postgres || RETCODE=$?
|
||||
[ -z "${RETCODE}" ] && rm /root/upgrade_postgres || exit $RETCODE
|
||||
fi
|
||||
# Necessary to enable backups
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
|
||||
|
@ -90,11 +91,16 @@ run:
|
|||
required=$(($(du -sb /shared/postgres_data | awk '{print $1}') * 2))
|
||||
|
||||
if [ "$free_disk" -lt "$required" ]; then
|
||||
echo "WARNING: Upgrading PostgreSQL would require an additional $(numfmt --to=si $(($required - $free_disk))) of disk space"
|
||||
echo "Please free up some space, or expand your disk, before continuing."
|
||||
echo ''
|
||||
echo 'To avoid upgrading change "templates/postgres.15.template.yml" TO "templates/postgres.template.yml" in containers/app.yml'
|
||||
exit 1
|
||||
echo
|
||||
echo -------------------------------------------------------------------------------------
|
||||
echo "WARNING: Upgrading PostgreSQL would require an additional $(numfmt --to=si $(($required - $free_disk))) of disk space"
|
||||
echo "Please free up some space, or expand your disk, before continuing."
|
||||
echo
|
||||
echo 'To avoid upgrading change "templates/postgres.template.yml" TO "templates/postgres.13.template.yml" in containers/app.yml'
|
||||
echo
|
||||
echo 'You can run "./launcher start app" to restart your app in the meanwhile.'
|
||||
echo -------------------------------------------------------------------------------------
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d /shared/postgres_data_old ]; then
|
||||
|
@ -119,8 +125,10 @@ run:
|
|||
echo -------------------------------------------------------------------------------------
|
||||
echo UPGRADE OF POSTGRES FAILED
|
||||
echo
|
||||
echo You can run "./launcher start app" to restart your app in the meanwhile
|
||||
echo Please visit https://meta.discourse.org/t/postgresql-15-update/349515 for support.
|
||||
echo
|
||||
echo You can run "./launcher start app" to restart your app in the meanwhile
|
||||
echo -------------------------------------------------------------------------------------
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -207,18 +215,6 @@ run:
|
|||
from: /^host.*all.*all.*::1\/128.*$/
|
||||
to: "host all all ::/0 md5"
|
||||
|
||||
# allow replication to connect in with md5/scram auth
|
||||
- replace:
|
||||
filename: "/etc/postgresql/15/main/pg_hba.conf"
|
||||
from: /^host.*replication.*all.*127.*$/
|
||||
to: "host replication all 0.0.0.0/0 md5"
|
||||
|
||||
# allow replication to connect in with md5/scram auth (IPv6)
|
||||
- replace:
|
||||
filename: "/etc/postgresql/15/main/pg_hba.conf"
|
||||
from: /^host.*replication.*all.*::1\/128.*$/
|
||||
to: "host replication all ::/0 md5"
|
||||
|
||||
- exec:
|
||||
tag: db
|
||||
cmd: |
|
||||
|
|
|
@ -17,7 +17,7 @@ hooks:
|
|||
to: sv start postgres || exit 1
|
||||
|
||||
run:
|
||||
- exec: apt-get remove -y postgresql-10 postgresql-client-10 postgresql-contrib-10
|
||||
- exec: DEBIAN_FRONTEND=noninteractive apt-get purge -y postgresql-15 postgresql-client-15 postgresql-contrib-15
|
||||
- exec: apt-get update && apt-get install -y postgresql-9.5 postgresql-client-9.5 postgresql-contrib-9.5
|
||||
- exec: mkdir -p /shared/postgres_run
|
||||
- exec: chown postgres:postgres /shared/postgres_run
|
||||
|
@ -141,6 +141,7 @@ run:
|
|||
- exec: su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists hstore;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists pg_trgm;"'
|
||||
- exec: su postgres -c 'psql $db_name -c "create extension if not exists unaccent;"'
|
||||
- exec:
|
||||
stdin: |
|
||||
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = '$db_name' AND encoding = pg_char_to_encoding('SQL_ASCII');
|
||||
|
|
|
@ -28,7 +28,7 @@ run:
|
|||
contents: |
|
||||
#!/bin/sh
|
||||
exec 2>&1
|
||||
HOME=/var/lib/postgresql USER=postgres exec thpoff chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
|
||||
HOME=/var/lib/postgresql USER=postgres exec thpoff chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
|
||||
|
||||
- file:
|
||||
path: /etc/service/postgres/log/run
|
||||
|
@ -62,15 +62,18 @@ run:
|
|||
fi
|
||||
rm -fr /shared/postgres_run/.s*
|
||||
rm -fr /shared/postgres_run/*.pid
|
||||
mkdir -p /shared/postgres_run/13-main.pg_stat_tmp
|
||||
chown postgres:postgres /shared/postgres_run/13-main.pg_stat_tmp
|
||||
chown -R root /var/lib/postgresql/13/main
|
||||
[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data || exit 0
|
||||
chown -R postgres:postgres /shared/postgres_data
|
||||
chown -R postgres:postgres /var/run/postgresql
|
||||
if [ -f /root/upgrade_postgres ]; then
|
||||
/root/upgrade_postgres
|
||||
rm /root/upgrade_postgres
|
||||
mkdir -p /shared/postgres_run/15-main.pg_stat_tmp
|
||||
chown postgres:postgres /shared/postgres_run/15-main.pg_stat_tmp
|
||||
chown -R root /var/lib/postgresql/15/main
|
||||
if [ ! -e /shared/postgres_data ]; then
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_data
|
||||
sudo -E -u postgres /usr/lib/postgresql/15/bin/initdb -D /shared/postgres_data
|
||||
chown -R postgres:postgres /shared/postgres_data
|
||||
chown -R postgres:postgres /var/run/postgresql
|
||||
elif [ -f /root/upgrade_postgres ]; then
|
||||
unset RETCODE
|
||||
/root/upgrade_postgres || RETCODE=$?
|
||||
[ -z "${RETCODE}" ] && rm /root/upgrade_postgres || exit $RETCODE
|
||||
fi
|
||||
# Necessary to enable backups
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
|
||||
|
@ -82,17 +85,22 @@ run:
|
|||
#!/bin/bash
|
||||
PG_MAJOR_OLD=`cat /shared/postgres_data/PG_VERSION`
|
||||
|
||||
if [ ! "13" = "$PG_MAJOR_OLD" ]; then
|
||||
echo Upgrading PostgreSQL from version ${PG_MAJOR_OLD} to 13
|
||||
if [ ! "15" = "$PG_MAJOR_OLD" ]; then
|
||||
echo Upgrading PostgreSQL from version ${PG_MAJOR_OLD} to 15
|
||||
free_disk=$(df -P -B1 /shared | tail -n 1 | awk '{print $4}')
|
||||
required=$(($(du -sb /shared/postgres_data | awk '{print $1}') * 2))
|
||||
|
||||
if [ "$free_disk" -lt "$required" ]; then
|
||||
echo "WARNING: Upgrading PostgreSQL would require an additional $(numfmt --to=si $(($required - $free_disk))) of disk space"
|
||||
echo "Please free up some space, or expand your disk, before continuing."
|
||||
echo ''
|
||||
echo 'To avoid upgrading change "templates/postgres.template.yml" TO "templates/postgres.12.template.yml" in containers/app.yml'
|
||||
exit 1
|
||||
echo
|
||||
echo -------------------------------------------------------------------------------------
|
||||
echo "WARNING: Upgrading PostgreSQL would require an additional $(numfmt --to=si $(($required - $free_disk))) of disk space"
|
||||
echo "Please free up some space, or expand your disk, before continuing."
|
||||
echo
|
||||
echo 'To avoid upgrading change "templates/postgres.template.yml" TO "templates/postgres.13.template.yml" in containers/app.yml'
|
||||
echo
|
||||
echo 'You can run "./launcher start app" to restart your app in the meanwhile.'
|
||||
echo -------------------------------------------------------------------------------------
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d /shared/postgres_data_old ]; then
|
||||
|
@ -100,10 +108,10 @@ run:
|
|||
fi
|
||||
|
||||
rm -fr /shared/postgres_data_new
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_data_new && sudo -u postgres /usr/lib/postgresql/13/bin/initdb -D /shared/postgres_data_new || exit 0
|
||||
install -d -m 0755 -o postgres -g postgres /shared/postgres_data_new && sudo -u postgres /usr/lib/postgresql/15/bin/initdb -D /shared/postgres_data_new || exit 0
|
||||
apt-get update
|
||||
apt-get install -y postgresql-${PG_MAJOR_OLD}
|
||||
chown -R postgres:postgres /var/lib/postgresql/13
|
||||
chown -R postgres:postgres /var/lib/postgresql/15
|
||||
/etc/init.d/postgresql stop
|
||||
rm -fr /shared/postgres_data/postmaster.pid
|
||||
cd ~postgres
|
||||
|
@ -111,16 +119,16 @@ run:
|
|||
echo >> /shared/postgres_data/postgresql.conf
|
||||
echo "data_directory = '/shared/postgres_data'" >> /shared/postgres_data/postgresql.conf
|
||||
SUCCESS=true
|
||||
sudo -u postgres /usr/lib/postgresql/13/bin/pg_upgrade -d /shared/postgres_data -D /shared/postgres_data_new -b /usr/lib/postgresql/${PG_MAJOR_OLD}/bin -B /usr/lib/postgresql/13/bin || SUCCESS=false
|
||||
sudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade -d /shared/postgres_data -D /shared/postgres_data_new -b /usr/lib/postgresql/${PG_MAJOR_OLD}/bin -B /usr/lib/postgresql/15/bin || SUCCESS=false
|
||||
|
||||
if [[ "$SUCCESS" == 'false' ]]; then
|
||||
echo -------------------------------------------------------------------------------------
|
||||
echo UPGRADE OF POSTGRES FAILED
|
||||
echo
|
||||
echo Please visit https://meta.discourse.org/t/postgresql-13-update/172563 for support.
|
||||
echo Please visit https://meta.discourse.org/t/postgresql-15-update/349515 for support.
|
||||
echo
|
||||
echo You can run "./launcher start app" to restart your app in the meanwhile
|
||||
echo
|
||||
echo -------------------------------------------------------------------------------------
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -141,69 +149,69 @@ run:
|
|||
fi
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
from: "data_directory = '/var/lib/postgresql/13/main'"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: "data_directory = '/var/lib/postgresql/15/main'"
|
||||
to: "data_directory = '/shared/postgres_data'"
|
||||
|
||||
# listen on all interfaces
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?listen_addresses *=.*/
|
||||
to: "listen_addresses = '*'"
|
||||
|
||||
# sync commit off is faster and less spiky, also marginally less safe
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?synchronous_commit *=.*/
|
||||
to: "synchronous_commit = $db_synchronous_commit"
|
||||
|
||||
# default is 128MB which is way too small
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?shared_buffers *=.*/
|
||||
to: "shared_buffers = $db_shared_buffers"
|
||||
|
||||
# default is 1MB which is too small
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?work_mem *=.*/
|
||||
to: "work_mem = $db_work_mem"
|
||||
|
||||
# allow for other
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?default_text_search_config *=.*/
|
||||
to: "default_text_search_config = '$db_default_text_search_config'"
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?checkpoint_segments *=.*/
|
||||
to: "checkpoint_segments = $db_checkpoint_segments"
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?logging_collector *=.*/
|
||||
to: "logging_collector = $db_logging_collector"
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/postgresql.conf"
|
||||
filename: "/etc/postgresql/15/main/postgresql.conf"
|
||||
from: /#?log_min_duration_statement *=.*/
|
||||
to: "log_min_duration_statement = $db_log_min_duration_statement"
|
||||
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/pg_hba.conf"
|
||||
filename: "/etc/postgresql/15/main/pg_hba.conf"
|
||||
from: /^#local +replication +postgres +peer$/
|
||||
to: "local replication postgres peer"
|
||||
|
||||
# allow all to connect in with md5 auth
|
||||
# allow all to connect in with md5/scram auth
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/pg_hba.conf"
|
||||
filename: "/etc/postgresql/15/main/pg_hba.conf"
|
||||
from: /^host.*all.*all.*127.*$/
|
||||
to: "host all all 0.0.0.0/0 md5"
|
||||
|
||||
# allow all to connect in with md5 auth (IPv6)
|
||||
# allow all to connect in with md5/scram auth (IPv6)
|
||||
- replace:
|
||||
filename: "/etc/postgresql/13/main/pg_hba.conf"
|
||||
filename: "/etc/postgresql/15/main/pg_hba.conf"
|
||||
from: /^host.*all.*all.*::1\/128.*$/
|
||||
to: "host all all ::/0 md5"
|
||||
|
||||
|
@ -221,7 +229,7 @@ run:
|
|||
background: true
|
||||
# use fast shutdown for pg
|
||||
stop_signal: INT
|
||||
cmd: HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
|
||||
cmd: HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
|
||||
|
||||
- file:
|
||||
path: /usr/local/bin/create_db
|
||||
|
|
Loading…
Add table
Reference in a new issue