sp-containers/docs/starting-with-docker-compos...

3.1 KiB

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".

Création du projet symfony

  1. Création du projet
symfony new app --webapp [other options...]
# voir https://symfony.com/download pour l'installation de symfony CLI
  1. Création du ficher Dockerfile
    A la racine du projet, créer le fichier Dockerfile et placer ce contenu:
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.

  1. 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:
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:
  1. Création du fichier Makefile
    A la racine du projet, créer le fichier Makefile et placer ce contenu:
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

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

make app
# dans le conteneur
composer require ....