103 lines
2.9 KiB
Markdown
103 lines
2.9 KiB
Markdown
|
# 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"](./kubernetes-usage.md)
|
||
|
|
||
|
## Création d'une image
|
||
|
|
||
|
1. Dans le répertoire de votre projet, créer le fichier `Dockerfile` suivant:
|
||
|
|
||
|
```Dockerfile
|
||
|
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"](./additional-packages.md) pour plus d'information.
|
||
|
|
||
|
2. Créer le fichier `.dockerignore` avec les données suivantes:
|
||
|
|
||
|
```text
|
||
|
/vendor
|
||
|
/var
|
||
|
```
|
||
|
|
||
|
3. Construire l'image de votre application
|
||
|
|
||
|
```sh
|
||
|
docker build \
|
||
|
-t my-symfony-app:latest \
|
||
|
.
|
||
|
```
|
||
|
|
||
|
4. Exécuter l'image de votre application
|
||
|
|
||
|
```sh
|
||
|
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**:
|
||
|
|
||
|
```sh
|
||
|
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:
|
||
|
|
||
|
```dockerfile
|
||
|
ARG ADDITIONAL_PACKAGES=""
|
||
|
|
||
|
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone
|
||
|
```
|
||
|
|
||
|
2. Créer un fichier `docker-compose.yml`:
|
||
|
|
||
|
```yaml
|
||
|
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
|
||
|
|
||
|
```sh
|
||
|
docker-compose up
|
||
|
```
|