> ## Content Index
> Fetch the complete content index at: https://kmartin.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# Déployer une première application avec Docker Compose 🚀
- URL: https://kmartin.io/deployer-une-premiere-application-avec-docker-compose/
- Published: 2026-01-12T13:52:43.000Z
- Updated: 2026-01-12T13:52:43.000Z
- Description: Déploie ta première application multi-services avec Docker Compose grâce à un exemple concret NGINX + PHP. Structure ton projet, fais communiquer tes containers et comprends enfin comment Docker Compose fonctionne en pratique 🚀
- Author: Kévin Martin
- Tags: Articles, Déploiement, Développement, Docker

Maintenant que Docker et Docker Compose sont installés, il est temps de passer à quelque chose de concret. Comprendre la théorie, c’est bien. Déployer une vraie application, c’est mieux.

Dans cet article, on va déployer une **application très simple mais réaliste** : un combo **NGINX + PHP**, avec un simple fichier `index.php`. L’objectif n’est pas de construire une usine à gaz, mais de comprendre comment plusieurs services Docker fonctionnent ensemble grâce à Docker Compose.

👉 Si ce n’est pas encore fait, je te conseille de lire d’abord :

- [Installer Docker facilement sur Linux](https://kmartin.io/installer-docker-facilement-sur-linux/)
- [Comprendre et maîtriser Docker Compose](https://kmartin.io/comprendre-et-maitriser-docker-compose/)

---

## Pourquoi NGINX + PHP ?

C’est un cas très courant :

- NGINX sert les requêtes HTTP
- PHP-FPM exécute le code PHP
- Les deux services communiquent entre eux

C’est simple, parlant, et très représentatif d’une stack web classique.

---

## Structure du projet

On commence par organiser proprement le projet :

```
nginx-php/
├── docker-compose.yml
├── nginx/
│   └── default.conf
└── app/
    └── index.php

```

Cette structure permet de bien séparer :

- la configuration NGINX
- le code applicatif
- la configuration Docker

---

## Le fichier index.php

Dans le dossier `app`, crée un fichier `index.php` :

```php
<?php
echo "Docker Compose fonctionne !";
phpinfo();

```

Rien de complexe ici. Ce fichier nous permet simplement de vérifier que PHP est bien exécuté via NGINX.

---

## Configuration NGINX

Dans le dossier `nginx`, crée le fichier `default.conf` :

```nginx
server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

```

Ici, NGINX ne fait qu’une chose : transmettre les fichiers PHP au service PHP-FPM.

---

## Le docker-compose.yml

C’est le cœur du projet.

```yaml
version: "3.9"

services:
  nginx:
    image: nginx:alpine
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./app:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  php:
    image: php:8.3-fpm
    container_name: php
    volumes:
      - ./app:/var/www/html

```

Quelques points importants :

- NGINX et PHP sont deux services distincts
- Ils partagent le même volume pour le code
- `depends_on` garantit que PHP démarre avant NGINX
- La communication se fait via le nom du service (`php`)

---

## Lancer l’application

Depuis la racine du projet :

```bash
docker compose up -d

```

Vérifie que tout tourne :

```bash
docker compose ps

```

Puis ouvre ton navigateur sur :

```
http://IP_DU_SERVEUR:8080

```

Si tout est correct, tu devrais voir ton message et la page `phpinfo()` 🎉

---

## Voir les logs

En cas de problème (ou juste par curiosité), les logs sont très utiles :

```bash
docker compose logs -f

```

Tu verras rapidement si l’erreur vient de NGINX ou de PHP.

---

## Arrêter proprement le projet

Quand tu as terminé :

```bash
docker compose down

```

Les containers sont arrêtés, mais les fichiers restent en place. Tu peux relancer le projet quand tu veux.

---

## Erreurs fréquentes

Quelques pièges classiques :

- oublier de monter le volume du code
- se tromper dans le nom du service PHP dans NGINX
- modifier un container au lieu du fichier `docker-compose.yml`

👉 rappelle-toi : **Docker Compose est la source de vérité**.

---

## Conclusion

Avec ce simple projet NGINX + PHP, tu viens de déployer une vraie application multi-services avec Docker Compose. Tu comprends maintenant comment les services communiquent, comment les volumes fonctionnent et comment structurer un projet proprement.

Dans le prochain article, on fera exactement la même chose… mais **avec Portainer**, pour voir comment gérer cette stack via une interface graphique sans perdre le contrôle 🚀