# Créer un projet en utilisant docker-compose > ⚠ La procédure suivante s'applique dans le cadre du développement d'une application > en utilisant l'image ["standalone"](./docker-usage.md). ## Création du projet symfony 1. **Création du projet** ```shell symfony new app --webapp [other options...] # voir https://symfony.com/download pour l'installation de symfony CLI ``` 2. **Création du ficher Dockerfile** A la racine du projet, créer le fichier `Dockerfile` et placer ce contenu: ```dockerfile ARG ADDITIONAL_PACKAGES="php81-pdo=8.1.14-r0 php81-pdo_pgsql=8.1.14-r0" FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone ``` **Notes**: adapter la liste des paquets additionnels à votre besoin. 3. **Création du fichier docker-compose** A la racine du projet, créer le fichier (ou remplacer celui existant)`docker-compose.yml`, supprimer le fichier `docker-compose.override.yml` et placer ce contenu: ```yaml version: '3' services: app: build: context: . dockerfile: Dockerfile volumes: - ./:/app:delegated environment: PHP_FPM_MEMORY_LIMIT: 128m APP_ENV: dev DATABASE_URL: postgresql://${POSTGRES_PASSWORD:-app}:${POSTGRES_PASSWORD:-app}@db:5432/${POSTGRES_DB:-app}?serverVersion=15&chartset=utf8 ports: - ${APP_HTTP_PORT:-8080}:8080 db: image: postgres:${POSTGRES_VERSION:-15}-alpine restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-app} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-app} POSTGRES_USER: ${POSTGRES_USER:-app} volumes: - app-db-data:/var/lib/postgresql/data:rw volumes: app-db-data: ``` 4. Création du fichier `Makefile` A la racine du projet, créer le fichier `Makefile` et placer ce contenu: ```make dc := docker-compose de := $(dc) exec dr := $(dc) run --rm app := $(dr) --no-deps app .DEFAULT_GOAL := help .PHONY: help help: ## Affiche cette aide @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' .PHONY: dev dev: vendor/autoload.php ## Lance le serveur de développement $(dc) up # ----------------------------------- # Utilitaires # ----------------------------------- .PHONY: php app: ## Se connecte au conteneur PHP $(app) /bin/sh # ----------------------------------- # Builds # ----------------------------------- .PHONY: build build: ## build application image docker build \ -t app-standalone:latest \ . # ----------------------------------- # Dependencies # ----------------------------------- vendor/autoload.php: composer.lock $(app) composer install touch vendor/autoload.php ``` ## Démarrer l'environnement ```shell cd app/ make # doit afficher la liste des commandes disponible make dev # doit démarrer l'environnement docker défini dans votre docker-compose.yml # l'application doit être disponible à l'adresse http://localhost:8080 ``` ## Installer des dépendances `composer` ```shell make app # dans le conteneur composer require .... ```