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
|
L'installeur sauvegarde le `docker-compose.yml` précédent en `.bak.<date>` s'il
|
||||||
change, et ne touche jamais `config/`, `data/` ni `log/`.
|
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
|
## Rollback
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
+24
@@ -142,6 +142,26 @@ else
|
|||||||
die "aucune image $FULL_IMAGE en local. Utilise --tar, --from-ssh, ou --image REPO:TAG"
|
die "aucune image $FULL_IMAGE en local. Utilise --tar, --from-ssh, ou --image REPO:TAG"
|
||||||
fi
|
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
|
# ----------------------------------------------------------------- 4. démarrage
|
||||||
log "Démarrage"
|
log "Démarrage"
|
||||||
if [ "$DRY" = 1 ]; then
|
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 ' 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 ' Logs : cd %s && docker compose logs -f\n' "$INSTALL_DIR"
|
||||||
printf ' Rollback: IMAGE_TAG=<tag précédent> docker compose up -d\n'
|
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
|
exit 0
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|||||||
Reference in new issue
Block a user