Construire un passe-partout Symfony 7 en utilisant FrankenPHP, Docker, PostgreSQL et php 8.4

DEV - 23/12
Qu'est-ce qu'on cuisine ? Salut à tous, dans cet article, nous allons construire un passe-partout pour...

Qu'est-ce qu'on cuisine ?

Salut à tous, dans cet article, nous allons construire un modèle pour démarrer tout type de projet Symfony, comme un monolithe ou une API. Nous utiliserons le serveur d'applications de premier plan FrankenPHP écrit en Go. Le passe-partout utilisera également PostgreSQL SGDB pour la base de données relationnelle.

Composez la pile à l'aide de Docker et Compose

Tout d'abord, pour orchestrer tous les conteneurs que nous utiliserons Compose, nous allons écrire la définition des conteneurs de pile.

La structure des répertoires sera très simple, un dossier pour tous les fichiers liés au docker et un autre pour le code source du projet Symfony.

Nous ajouterons uncomposer.ymlfichier directement à la racine du projet.

services : base de données standard : image : postgres:16 nom_conteneur : fichier env de la base de données standard : - redémarrage symfony/.env : toujours environnement : POSTGRES_DB : ${DATABASE_NAME} POSTGRES_PASSWORD : ${DATABASE_PWD} ports : - 15432 : 5432 volumes : - data_base de données :/var/lib/postgresql/data:rw passe-partout-app : env_file : - symfony/.env nom_du conteneur : build de l'application standard : contexte : ./dockerfile : docker/api/Dockerfile cible : frankenphp_dev depend_on : - image de la base de données standard : ${IMAGES_PREFIX:-}redémarrage de l'application standard : à moins qu'il ne soit arrêté environnement : SERVER_NAME : ${SERVER_NAME :-http://localhost}, boilerplate-app :80 MERCURE_PUBLISHER_JWT_KEY : ${CADDY_MERCURE_JWT_SECRET:-!ChangeThisMercureHubJWTSecretKey!} MERCURE_SUBSCRIBER_JWT_KEY : ${CADDY_MERCURE_JWT_SECRET:-!ChangeThisMercureHubJWTSecretKey!} TRUSTED_PROXIES : ${TRUSTED_PROXIES:-127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16} TRUSTED_HOSTS : ${TRUSTED_HOSTS :-^${SERVER_NAME :-nbonnici\.info|localhost}|php$$} DATABASE_URL : postgresql://${POSTGRES_USER:-app}:${POSTGRES_PASSWORD:-!ChangeMe!}@database:5432/${POSTGRES_DB:-app}?serverVersion=${POSTGRES_VERSION:-16}&charset=${POSTGRES_CHARSET:- utf8} MERCURE_URL : ${CADDY_MERCURE_URL:-http://php/.well-known/mercure} MERCURE_PUBLIC_URL : ${CADDY_MERCURE_PUBLIC_URL:-http://${SERVER_NAME:-localhost}/.well-known/mercure} MERCURE_JWT_SECRET : ${CADDY_MERCURE_JWT_SECRET : -!ChangeThisMercureHubJWTSecretKey!} volumes : - ./symfony:/app:cached - caddy_data:/data - caddy_config:/config # commentez la ligne suivante en production, cela permet d'avoir de jolis logs lisibles par l'homme dans dev tty : true réseaux : défaut : externe : vrai nom : volumes proxy : data_base de données : caddy_data : caddy_config :
Entrer en mode plein écran Quitter le mode plein écran

Ici rien d'extraordinaire, nous créons sur un réseau personnalisé un conteneur de base de données utilisant la dernière version de PostgreSQL et un autre conteneur construit à l'aide de frankenphp contenant l'application Symfony.

Nous pouvons le remplacer de cette façon à des fins de développement en utilisant un compose.override.yml à la racine du projet

# Services de remplacement de l'environnement de développement : boilerplate-app : build : contexte : ./ dockerfile : docker/api/Dockerfile cible : frankenphp_dev ports : # HTTP - cible : 80 publié : ${HTTP_PORT:-80} protocole : tcp # HTTPS - cible : 443 publié : ${HTTPS_PORT:-443} protocole : tcp # HTTP/3 - cible : 443 publié : ${HTTP3_PORT:-443} protocole : volumes udp : - ./symfony:/app - /symfony/v...
[Courte citation de 8% de l'article original]
Loading...