Adoption d'un conteneur lance par docker run (stop + rename, rollback conserve)
This commit is contained in:
1 parent
28d0742091
commit
1c63f59a28
2 files changed
+40
No files matched your search
@@ -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
@@ -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
|
||||
|
||||
Reference in new issue
Block a user