Перейти к основному содержимому
Версия: 7.0

Docker

осторожно

Данная инструкция предпологает:

  • Физическое расположение Пассворка — /<passwork>/
  • Версия PostgreSQL >= 14.

Важно: миграция базы данных с ODM на ORM возможна только после миграции Пассворка на версию 7.

Миграция с созданием базы в PostgreSQL

Отредактировать конфигурационный файл Docker сборки — ./.env:

# Прописать в App variables параметр OBJECT_MAPPER с значением ORM
OBJECT_MAPPER=ORM
Изменение OBJECT_MAPPER

Изменить конфигурационный файл Пассворка — ./conf/keys/config.env:

APP_URL=https://your_host
DATABASE_URL=postgresql://username:password@pgsql_host:5432/pw?serverVersion=16&charset=utf8

MIGRATION_DATABASE_URL=mongodb://mongo_host:27017
MIGRATION_DATABASE_DB=pw
MIGRATION_DATABASE_USERNAME=
MIGRATION_DATABASE_PASSWORD=

Описание параметров

  • DATABASE_URL — строка подключения к PostgreSQL серверу
  • Если PostgreSQL установлен на отдельном сервере:
    • В конфигурационном файле postgresql.conf нужно изменить параметр listen_addresses;
    • В конфигурационном файле pg_hba.conf нужно прописать возможность подключения Пассворка с помощью postgres пользователя к PgSQL.
  • MIGRATION_DATABASE_URL — значение параметра MONGODB_URL
  • MIGRATION_DATABASE_DB — значение параметра MONGODB_DB
  • MIGRATION_DATABASE_USERNAME — значение параметра MONGODB_USERNAME
  • MIGRATION_DATABASE_PASSWORD — значение параметра MONGODB_PASSWORD

Пересоздать PHP контейнер для применения изменений и очистки кэша Пассворка:

docker compose up -d --force-recreate php-fpm

Запуск миграции

docker compose exec -T php-fpm sh -c "cd /server/www && php bin/console doctrine:database:create"
docker compose exec -T php-fpm sh -c "cd /server/www && php bin/console doctrine:migrations:migrate --no-interaction"
docker compose exec -T php-fpm sh -c "cd /server/www && yes | php bin/console database:orm:migration"

Процесс миграции базы данных Пассворка в PostgreSQL:

Процесс миграции базы данных Пассворка в PostgreSQL

После завершения следующие параметры в config.env больше не нужны и их можно удалить:

MIGRATION_DATABASE_URL=mongodb://mongo_host:27017
MIGRATION_DATABASE_DB=pw
MIGRATION_DATABASE_USERNAME=
MIGRATION_DATABASE_PASSWORD=

Миграция с уже созданной базой в PostgreSQL

Отредактировать конфигурационный файл Docker сборки — ./.env:

# Прописать в App variables параметр OBJECT_MAPPER с значением ORM
OBJECT_MAPPER=ORM
Изменение OBJECT_MAPPER

Изменить конфигурационный файл Пассворка — ./conf/keys/config.env:

APP_URL=https://your_host
DATABASE_URL=postgresql://username:password@pgsql_host:5432/pw?serverVersion=16&charset=utf8

MIGRATION_DATABASE_URL=mongodb://mongo_host:27017
MIGRATION_DATABASE_DB=pw
MIGRATION_DATABASE_USERNAME=
MIGRATION_DATABASE_PASSWORD=

Описание параметров

  • DATABASE_URL — строка подключения к PostgreSQL серверу
  • Если PostgreSQL установлен на отдельном сервере:
    • В конфигурационном файле postgresql.conf нужно изменить параметр listen_addresses;
    • В конфигурационном файле pg_hba.conf нужно прописать возможность подключения Пассворка с помощью postgres пользователя к PgSQL.
  • MIGRATION_DATABASE_URL — значение параметра MONGODB_URL
  • MIGRATION_DATABASE_DB — значение параметра MONGODB_DB
  • MIGRATION_DATABASE_USERNAME — значение параметра MONGODB_USERNAME
  • MIGRATION_DATABASE_PASSWORD — значение параметра MONGODB_PASSWORD

Пересоздать PHP контейнер для применения изменений и очистки кэша Пассворка:

docker compose up -d --force-recreate php-fpm

Запуск миграции

docker compose exec -T php-fpm sh -c "cd /server/www && php bin/console doctrine:migrations:migrate --no-interaction"
docker compose exec -T php-fpm sh -c "cd /server/www && yes | php bin/console database:orm:migration"

Процесс миграции базы данных Пассворка в PostgreSQL:

Процесс миграции базы данных Пассворка в PostgreSQL

После завершения следующие параметры в config.env больше не нужны и их можно удалить:

MIGRATION_DATABASE_URL=mongodb://mongo_host:27017
MIGRATION_DATABASE_DB=pw
MIGRATION_DATABASE_USERNAME=
MIGRATION_DATABASE_PASSWORD=