[BUG] `docker compose run` drops the anonymous volumes of a dependency it recreates
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- docker, docker-compose, go
- Área
- devops, infrastructure
Línea de trabajo
Trace the implementation of docker compose run when it recreates a dependency, focusing on how anonymous volumes are transferred between container generations; compare that path with docker compose up. Use the provided Compose YAML and commands to reproduce the lost data, then add or update tests confirming that run preserves dependency volumes. This work is already being addressed by linked pull request #14358.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
When docker compose run recreates a dependency whose configuration changed, the new container gets fresh, empty anonymous volumes instead of the old ones. A database dependency (any image declaring VOLUME, e.g. postgres or mysql) then looks wiped. docker compose up carries the same anonymous volumes over to the recreated container, so the data stays.
The data is not deleted: the previous anonymous volume is left dangling, so it can still be recovered by hand, but docker volume prune would remove it.
Expected: run keeps the anonymous volumes of a recreated dependency, as up does.
Steps To Reproduce
services:
app:
image: alpine
command: echo done
depends_on: [db]
db:
image: alpine
command: sleep infinity
volumes:
- /data # anonymous volume
environment:
TAG: ${TAG:-one}
$ docker compose up -d db
$ docker compose exec db sh -c 'echo hello > /data/file'
$ TAG=two docker compose run --rm app # db's config changed, so db is recreated
$ docker compose exec db cat /data/file
cat: can't open '/data/file': No such file or directory
With TAG=two docker compose up -d db instead of run, the last command prints hello.
Compose Version
Docker Compose version 5.0.1
Also reproduced on main (289d8a037).
Docker Environment
Docker Engine 29.1.3 (linux/arm64, Docker Desktop on macOS)
Anything else?
No response
- Lenguaje dominante
- Go
- Estrellas
- 38.4k
- Forks
- 5.9k
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 66
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de docker/compose
-
[BUG] `watch` rebuilds in an endless loop when the watched path contains `.git`Posiblemente ocupada @htoyoda18 la tomó hoy. Abiertokind/bug status/0-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
docker/compose#14362 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
kind/feature status/0-triage
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
Epic: Move service selection into the backend API instead of pre-filtering the project in the CLIAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
Los mantenedores suelen responder en 1 día
-
Watch: exec modePosiblemente ocupada @glours la tomó hace 7 días. Abiertokind/feature
docker/compose#14326 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Restore build concurrency limit now that bake supports itPosiblemente ocupada @maxproske la tomó hace 4 días. Abiertokind/feature
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
Todos los issues de docker/compose
Issues similares
-
validateDeclaredPath lets control characters through into the Gradle init script's Groovy literalAbiertoagent-butler-finding agent-research bug ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
jordansmall/spindrift#5821 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/rocketmq-dashboard#7243 ·
Los mantenedores suelen responder en 3 días
-
Missing example coverage: getClockPosiblemente ocupada @camunda-sdk-automation la tomó hoy. Abiertonew-operations
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
camunda/orchestration-cluster-api-go#75 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
praetorianer777/Stator#465 ·
Los mantenedores suelen responder en 1 día