sp-containers/docs/docker-usage.md

2.9 KiB

Créer une image Docker pour votre projet Symfony

⚠ La procédure suivante s'applique dans le cadre d'un déploiement sur Docker.

Pour créer une image à destination d'un environnement Kubernetes, préférer la procédure "Usage dans Kubernetes"

Création d'une image

  1. Dans le répertoire de votre projet, créer le fichier Dockerfile suivant:

    ARG ADDITIONAL_PACKAGES="<packages_list>"
    
    FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone
    

    La variable d'environnement ADDITIONAL_PACKAGES permet de définir une liste de paquets supplémentaires à installer avant d'exécuter les "triggers" de base embaqrués par l'image. Voir "Installer des paquets supplémentaires" pour plus d'information.

  2. Créer le fichier .dockerignore avec les données suivantes:

    /vendor
    /var
    
  3. Construire l'image de votre application

    docker build \
        -t my-symfony-app:latest \
        .
    
  4. Exécuter l'image de votre application

    docker run \
        -it \
        --rm \
        -p 8080:8080 \
        my-symfony-app:latest
    
  5. Ouvrir l'URL http://localhost:8080. Votre application devrait s'afficher.

Utilisation de votre image en développement

  1. Avec docker:

    docker run \
        -it --rm \
        -p 8080:8080 \
        -v "${PWD}/src:/app/src:delegated" \
        -v "${PWD}/templates:/app/templates:delegated" \
        -v "${PWD}/translations:/app/translations:delegated" \
        -v "${PWD}/tests:/app/tests:delegated" \
        -v "${PWD}/config:/app/config:delegated" \
        -v "${PWD}/.env:/app/.env:delegated" \
        test-symfony-app
    
  2. Avec docker-compose:

    1. Créer un fichier Dockerfile.standalone à la racine de votre projet:

      ARG ADDITIONAL_PACKAGES=""
      
      FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone
      
    2. Créer un fichier docker-compose.yml:

      version: '3'
      services:
      
          app:
              build:
                  context: .
                  dockerfile: Dockerfile.standalone
              ports:
                  - ${APP_HTTP_PORT:-8080}:8080
              volumes:
                  - ./src:/app/src:delegated
                  - ./templates:/app/templates:delegated
                  - ./translations:/app/translations:delegated
                  - ./tests:/app/tests:delegated
                  - ./config:/app/config:delegated
                  - ./.env:/app/.env:delegated
              environment:
                  PHP_FPM_MEMORY_LIMIT: 128m
                  APP_ENV: dev
                  ## truncated for brevity
      
    3. Démarrer l'environnement

      docker-compose up