From fcbc6b706ff79bdd61701b257c220ee06522f23c Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 11 Sep 2026 18:08:48 +0000 Subject: [PATCH] =?UTF-8?q?fix(docker):=20construire=20les=20images=20au?= =?UTF-8?q?=20lieu=20de=20tenter=20de=20les=20t=C3=A9l=C3=A9charger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Portainer échouait en « Pull and redeploy » : `pull access denied for sociaflow-app, repository does not exist`. Les services `app` et `ffmpeg-api` n'ayant que `build:`, Compose leur dérivait un nom d'image depuis le nom de la stack et Docker allait la chercher sur Docker Hub, où elle n'existe évidemment pas. - `pull_policy: build` : l'image est reconstruite, jamais téléchargée - `image:` explicite, pour que le nom ne dépende plus du nom donné à la stack dans Portainer - DOCKER.md : procédure Portainer et diagnostic de cette erreur Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Db2EazEcvnqgTTeg8oGTif --- DOCKER.md | 17 +++++++++++++++++ docker-compose.yml | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/DOCKER.md b/DOCKER.md index 484ea7c..c7c6e15 100644 --- a/DOCKER.md +++ b/DOCKER.md @@ -157,6 +157,23 @@ Si `APP_URL` est absent, l'URL est déduite des en-têtes `X-Forwarded-Proto` et (voir la configuration Nginx ci-dessus). Un `APP_URL` réglé sur `http://localhost:5555` en production produit une URI que Facebook refuse. +## 🧩 Déploiement via Portainer (stack Git) + +La stack se construit depuis les sources : `app` et `ffmpeg-api` ont une section +`build:`, leurs images n'existent sur aucun registre. + +- **« Pull and redeploy » échoue** avec `pull access denied for -app, + repository does not exist` : Docker cherche sur Docker Hub une image qui est + construite localement. Le `pull_policy: build` du `docker-compose.yml` évite + cette tentative ; si votre version de Portainer déclenche quand même le pull, + décochez **« Re-pull image »** dans la mise à jour de la stack. +- Pour reconstruire après une mise à jour du dépôt : *Stack → Editor → + Update the stack*, en laissant Docker rebâtir les images (ou + `docker compose up -d --build` en ligne de commande). +- Le nom des images est figé (`socialflow-app:latest`, + `socialflow-ffmpeg-api:latest`) : il ne dépend donc plus du nom donné à la + stack dans Portainer. + ## 🔒 Sécurité en production 1. **Variables d'environnement** : Ne commitez JAMAIS le fichier `.env` diff --git a/docker-compose.yml b/docker-compose.yml index e29a1dc..a30659d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,6 +29,11 @@ services: build: context: . dockerfile: Dockerfile + # Image construite sur place : nom figé pour ne pas dépendre du nom de la + # stack, et `pull_policy: build` pour que Docker la reconstruise au lieu + # d'aller la chercher sur Docker Hub (où elle n'existe pas). + image: socialflow-app:latest + pull_policy: build container_name: socialflow-app restart: unless-stopped environment: @@ -66,6 +71,8 @@ services: build: context: ./ffmpeg-service dockerfile: Dockerfile + image: socialflow-ffmpeg-api:latest + pull_policy: build container_name: socialflow-ffmpeg restart: unless-stopped environment: