Adoption d'un conteneur lance par docker run (stop + rename, rollback conserve)

This commit is contained in:
Hermes committed 2026-11-05 16:01:54 +01:00
1 parent 28d0742091
commit 1c63f59a28
2 files changed
+40

No files matched your search

+16
View File
@@ -60,6 +60,22 @@ curl -fsSL .../install.sh | sudo bash -s -- --tag v50
L'installeur sauvegarde le `docker-compose.yml` précédent en `.bak.<date>` s'il
change, et ne touche jamais `config/`, `data/` ni `log/`.
## Adoption d'un conteneur existant
Si un conteneur `streambox-aio` tourne déjà mais a été créé par `docker run`
(sans labels compose), `docker compose up -d` échouerait sur un conflit de nom.
L'installeur le détecte, l'**arrête** et le renomme
`streambox-aio.avant-compose.<date>` — il n'est pas supprimé. Il reste le
rollback immédiat :
```bash
docker rm -f streambox-aio
docker rename streambox-aio.avant-compose.<date> streambox-aio
docker start streambox-aio
```
Un conteneur déjà géré par ce projet compose est simplement recréé.
## Rollback
```bash
+24
View File
@@ -142,6 +142,26 @@ else
die "aucune image $FULL_IMAGE en local. Utilise --tar, --from-ssh, ou --image REPO:TAG"
fi
# ------------------------------------ 3bis. adoption d'un conteneur hors compose
# Un conteneur créé par `docker run` bloquera `up -d` (nom déjà pris). On l'arrête
# et on le renomme au lieu de le supprimer : il reste le rollback immédiat.
COMPOSE_PROJECT="${COMPOSE_PROJECT:-$(basename "$INSTALL_DIR")}"
BACKUP_NAME=""
if docker inspect streambox-aio >/dev/null 2>&1; then
proj="$(docker inspect -f '{{index .Config.Labels "com.docker.compose.project"}}' streambox-aio 2>/dev/null || true)"
if [ "$proj" != "$COMPOSE_PROJECT" ]; then
BACKUP_NAME="streambox-aio.avant-compose.$(date +%Y%m%d%H%M%S)"
log "Conteneur existant hors compose (projet='${proj:-aucun}')"
if [ "$DRY" = 1 ]; then
printf ' [dry-run] docker stop streambox-aio && docker rename streambox-aio %s\n' "$BACKUP_NAME"
else
docker stop streambox-aio >/dev/null
docker rename streambox-aio "$BACKUP_NAME"
ok "ancien conteneur arrêté et conservé sous $BACKUP_NAME"
fi
fi
fi
# ----------------------------------------------------------------- 4. démarrage
log "Démarrage"
if [ "$DRY" = 1 ]; then
@@ -169,6 +189,10 @@ for _ in $(seq 1 "$WAIT"); do
printf ' UI : http://%s:%s\n' "$(hostname -I 2>/dev/null | awk '{print $1}')" "$UI_PORT"
printf ' Logs : cd %s && docker compose logs -f\n' "$INSTALL_DIR"
printf ' Rollback: IMAGE_TAG=<tag précédent> docker compose up -d\n'
if [ -n "$BACKUP_NAME" ]; then
printf ' Retour au conteneur manuel :\n'
printf ' docker rm -f streambox-aio && docker rename %s streambox-aio && docker start streambox-aio\n' "$BACKUP_NAME"
fi
exit 0
fi
sleep 1