Formations aurelearn

Installation et configuration d’une base de données PostgreSQL

Je vous recommande d’utiliser PostgreSQL (déjà présent dans le docker-compose.yml), aujourd’hui plus moderne avec des fonctionnalités non-supportées chez les concurrents MySQL, MariaDB ou encore SQLite. Mais le choix final dépend surtout de votre environnement de production et des outils auxquels vous avez accès sur celui-ci.

Pour commencer, installez Doctrine :

shell

# Avec just
just composer require symfony/orm-pack
# Sans just
docker compose run --rm composer require symfony/orm-pack

Puis le Maker Bundle (pour avoir accès aux commandes symfony console make:*) :

shell

# Avec just
just composer require --dev symfony/maker-bundle
# Sans just
docker compose run --rm composer require --dev symfony/maker-bundle

Rendez-vous dans le .env.local et repérez le bloc suivant :

.env.local

###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=15&charset=utf8"
###< doctrine/doctrine-bundle ###

Modifiez la ligne postgresql de la manière suivante :

.env.local

DATABASE_URL="postgresql://POSTGRES_USER:POSTGRES_PASSWORD@DATABASE_SERVICE_NAME/POSTGRES_DB?serverVersion=15&charset=utf8"

En remplaçant les valeurs :

  • POSTGRES_USER par celle spécifiée dans le docker-compose.yml
  • POSTGRES_PASSWORD par celle spécifiée dans le docker-compose.yml
  • POSTGRES_DB par celle spécifiée dans le docker-compose.yml
  • DATABASE_SERVICE_NAME par le nom du service correspondant à la base de données dans le docker-compose.yml

Maintenant, si vous lancez la commande :

shell

# Avec just
just console doctrine:database:create
# Sans just
docker compose run --rm symfony console doctrine:database:create

Vous devriez avoir une erreur vous indiquant que la base de données a déjà été créée, ce qui est tout à fait normal, nous prouvant ainsi que la connection est bien effective.

© 2023 • Aurélien Devaux