Дано: сервис с PostgreSQL неизвестной версии (но точно 9.5+). При обновлении образа контейнера, он перестаёт запускаться — в логах ошибка про несовместимость версий.
Найти: способ запустить последнюю версию PostgreSQL.
Умное решение: проверить версию базы и постепенно повышать версию с использованием команды pg_upgrade
.
Глупое решение: использовать pgautoupgrade размером ~200 Мб:
docker-compose.yamlservice: 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 # ...
.env filePGAUTO_ONESHOT=yes POSTGRES_USER=postgres POSTGRES_PASSWORD=changeme