115 lines
3.1 KiB
Markdown
115 lines
3.1 KiB
Markdown
|
# 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 ....
|
||
|
```
|