Дано: сервис с PostgreSQL неизвестной версии (но точно 9.5+). При обновлении образа контейнера, он перестаёт запускаться — в логах ошибка про несовместимость версий.
Найти: способ запустить последнюю версию PostgreSQL.
Умное решение: проверить версию базы и постепенно повышать версию с использованием команды pg_upgrade
.
Глупое решение: использовать pgautoupgrade размером ~200 Мб:
service:
pgautoupgrade:
image: pgautoupgrade/pgautoupgrade:17-alpine
restart: no
volumes:
- ./db:/var/lib/postgresql/data
env_file: .env
postgres:
image: postgres:17-alpine
restart: unless-stopped
volumes:
- ./db:/var/lib/postgresql/data
env_file: .env
depends_on:
pgautoupgrade:
condition: service_completed_successfully
healthcheck:
test: ['CMD-SHELL', "pg_isready -U ${POSTGRES_USER}"]
interval: 2s
timeout: 2s
retries: 5
app:
depends_on:
postgres:
condition: service_healthy
env_file: .env
# ...
PGAUTO_ONESHOT=yes
POSTGRES_USER=postgres
POSTGRES_PASSWORD=changeme