Déployer Nextcloud, ownCloud et WordPress (avec leurs bases de données) via un fichier docker-compose.yml.
docker-compose.yml). Au lieu de taper plein de commandes docker run, vous décrivez tous vos services dans un fichier YAML et vous lancez tout avec docker compose up. C'est idéal pour des applications qui ont besoin de plusieurs services (par ex. un site web + sa base de données).
# Ouvrir un terminal WSL dans VS Code (Ctrl + `)
docker --version
docker compose version
http://localhost:PORT. Si vous êtes sur un réseau avec d'autres machines, remplacez localhost par l'IP de votre machine Windows.
On crée un dossier dédié. Tous les volumes seront stockés dans ce même dossier pour s'y retrouver facilement depuis VS Code.
mkdir -p ~/docker-stack
cd ~/docker-stack
code .
La commande code . ouvre le dossier directement dans VS Code.
Ce fichier contient 3 stacks : Nextcloud, ownCloud et WordPress, chacune avec sa base de données MariaDB. Les volumes sont en ./ (chemin relatif) pour rester dans le dossier du projet.
Créez le fichier docker-compose.yml dans VS Code :
services:
# ========================
# NEXTCLOUD
# ========================
nextcloud-db:
image: mariadb:10.11
container_name: nextcloud-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: Password
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Password
volumes:
- ./data/nextcloud-db:/var/lib/mysql
nextcloud:
image: nextcloud:latest
container_name: nextcloud
restart: unless-stopped
ports:
- "8081:80"
environment:
MYSQL_HOST: nextcloud-db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Password
volumes:
- ./data/nextcloud:/var/www/html
depends_on:
- nextcloud-db
# ========================
# OWNCLOUD
# ========================
owncloud-db:
image: mariadb:10.11
container_name: owncloud-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: Password
MYSQL_DATABASE: owncloud
MYSQL_USER: owncloud
MYSQL_PASSWORD: Password
volumes:
- ./data/owncloud-db:/var/lib/mysql
owncloud:
image: owncloud/server:latest
container_name: owncloud
restart: unless-stopped
ports:
- "8082:8080"
environment:
OWNCLOUD_DOMAIN: localhost:8082
OWNCLOUD_DB_TYPE: mysql
OWNCLOUD_DB_HOST: owncloud-db
OWNCLOUD_DB_NAME: owncloud
OWNCLOUD_DB_USERNAME: owncloud
OWNCLOUD_DB_PASSWORD: Password
OWNCLOUD_ADMIN_USERNAME: admin
OWNCLOUD_ADMIN_PASSWORD: Password
volumes:
- ./data/owncloud:/mnt/data
depends_on:
- owncloud-db
# ========================
# WORDPRESS
# ========================
wordpress-db:
image: mariadb:10.11
container_name: wordpress-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: Password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: Password
volumes:
- ./data/wordpress-db:/var/lib/mysql
wordpress:
image: wordpress:latest
container_name: wordpress
restart: unless-stopped
ports:
- "8083:80"
environment:
WORDPRESS_DB_HOST: wordpress-db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: Password
volumes:
- ./data/wordpress:/var/www/html
depends_on:
- wordpress-db
./data/ et pas des volumes nommés ?
En utilisant des chemins relatifs (./data/nextcloud, etc.), toutes les données sont visibles directement dans votre explorateur VS Code. C'est beaucoup plus pratique pour débugger, éditer des configs ou comprendre la structure en environnement de test.
docker-stack/
├── docker-compose.yml
└── data/
├── nextcloud/ # Fichiers Nextcloud
├── nextcloud-db/ # Base de données Nextcloud
├── owncloud/ # Fichiers ownCloud
├── owncloud-db/ # Base de données ownCloud
├── wordpress/ # Fichiers WordPress
└── wordpress-db/ # Base de données WordPress
# Lance TOUS les services définis dans docker-compose.yml
# -d = mode détaché (arrière-plan) — vous gardez le terminal libre
# Docker télécharge les images automatiquement si elles ne sont pas déjà présentes
docker compose up -d
Docker va télécharger les images et démarrer tous les containers. Le dossier data/ sera créé automatiquement.
# Affiche l'état de tous les services de la stack
# Tous doivent être "Up" (en marche)
docker compose ps
Tous les services doivent être en état Up.
http://localhost:PORThttp://IP_DE_VOTRE_PC:PORTipconfig.
| Application | URL (depuis votre PC) | Port |
|---|---|---|
| Nextcloud | http://localhost:8081 |
8081 |
| ownCloud | http://localhost:8082 |
8082 |
| WordPress | http://localhost:8083 |
8083 |
# Affiche les logs d'un service spécifique
docker compose logs nextcloud
# -f = "follow" : affiche les logs en temps réel (Ctrl+C pour arrêter)
docker compose logs -f wordpress
# Arrête tous les containers de la stack (les données sont conservées dans ./data/)
docker compose down
# Arrête ET supprime les volumes (ATTENTION : toutes les données sont perdues !)
docker compose down -v
rm -rf ./data
# Redémarre un seul service sans toucher aux autres
docker compose restart nextcloud
./data/, visible directement dans VS Code.