Déployer l’application avec Docker et Docker Compose
Préparez le déploiement en production avec Docker, Docker Compose et la configuration serveur.
Préparer le déploiement avec Docker
Avant de mettre en production ton site e-commerce (Remix + Strapi 5), Docker et Docker Compose simplifient la gestion des dépendances, des variables d’environnement et des mises à l’échelle sous forme de conteneurs isolés.
Pourquoi Docker ?
- Isolation des services (Strapi, Postgres, Remix).
- Reproductibilité garantie (« it works on my machine »).
- Facilité de mise à l’échelle et d’orchestration.
Tip
Consulter la doc officielle de Docker et de
Docker Compose.
Structure des fichiers de déploiement
On va créer les éléments suivants :
- Dockerfile pour Strapi
- Dockerfile pour Remix
- .dockerignore
- docker-compose.yml
1FROM node:18-alpine23# Définit le répertoire de travail4WORKDIR /usr/src/app56# Copie package.json et package-lock.json pour cacher les7# installations aux changements de code8COPY package.json package-lock.json ./910# Installe les dépendances11RUN npm ci --production1213# Copie le code source14COPY ./src ./src15COPY ./config ./config1617# Expose le port Strapi18EXPOSE 13371920# Lancement du serveur Strapi en production21CMD ["npm", "run", "start"]2223```docker remix/Dockerfile24FROM node:18-alpine2526WORKDIR /usr/src/app2728# Installe les dépendances29COPY package.json package-lock.json ./30RUN npm ci3132# Copie tout le code front33COPY . .3435# Compile le build Remix36RUN npm run build3738EXPOSE 30003940# Démarre le serveur Remix en mode production41CMD ["npm", "run", "start"]
1node_modules2dist3.build4.env5docker-compose.yml6Dockerfile*
1version: "3.8"23services:4strapi:5build:6context: .7dockerfile: Dockerfile.strapi8image: strapi-ecommerce:latest9restart: unless-stopped10env_file: .env11ports:12- "1337:1337"13volumes:14- ./config:/usr/src/app/config15- ./src:/usr/src/app/src16- ./public:/usr/src/app/public17depends_on:18- db1920db:21image: postgres:13-alpine22restart: unless-stopped23env_file: .env24volumes:25- strapi-db-data:/var/lib/postgresql/data2627remix:28build:29context: .30dockerfile: Dockerfile.remix31image: remix-ecommerce:latest32restart: unless-stopped33env_file: .env34ports:35- "3000:3000"36depends_on:37- strapi3839volumes:40strapi-db-data:
Explications pas à pas
1. Dockerfile Strapi
- On choisit l’image
node:18-alpinepour légèreté. npm ci --productioninstalle uniquement les dépendances utiles en prod.- Le code est copié après l’installation pour tirer parti du cache Docker.
2. Dockerfile Remix
- Identique pour Node 18.
- Installation complète (
npm ci) car on a besoin du compilateur. npm run buildgénère le dossier.build(oubuild) pour Remix.
Tip
Se référer à la section « Build et distribution » de la doc Remix.
3. .dockerignore
Limite les fichiers copiés dans le contexte Docker pour accélérer le build.
4. docker-compose.yml
- services.strapi : ton backend headless • dépend de la base de données
db. - services.db : Postgres pour Strapi.
- services.remix : l’app Remix qui interagit avec Strapi.
Variables d’environnement
Assure-toi que ton fichier .env contient toutes les clés requises :
DATABASE_HOST, DATABASE_NAME, JWT_SECRET, STRAPI_URL, FRONTEND_URL, etc.
Démarrer les conteneurs
1docker-compose up -d
-d: mode détachédocker pspour vérifier que tous les conteneurs tournent.
Gérer les logs
1docker-compose logs -f strapi
Bonnes pratiques de production
- Active le mode production (
NODE_ENV=production) dans.env. - Utilise un reverse proxy (Nginx, Traefik) pour (SSL, domaine).
- Surveille la santé des conteneurs avec un outil comme Portainer.
- Prévois des backups automatiques de la base Postgres (cron + pg_dump).
Scalabilité
Tu peux scaler le nombre de conteneurs Remix :
docker-compose up --scale remix=3 -d
En route vers la mise en ligne
- Test en local : vérifie tous les endpoints Strapi (CRUD produits).
- Test front : passe une commande, gère un utilisateur.
- Production : pousse tes images Docker sur Docker Hub ou un registry privé.
- CI/CD : automatise ton pipeline (GitHub Actions, GitLab CI) pour rebuild & push.
Exercices rapides
- 💻 Modifier
docker-compose.ymlpour ajouter un service Redis et configurer Strapi
à utiliser un cache. - ⚙️ Créer un script
make buildqui exécute les builds Docker et pousse
les images sur un registry. - 🔒 Configuration SSL : ajoute un service Nginx en front pour gérer HTTPS
avec un certificat Let's Encrypt.
Liens utiles :