Saqué una imagen base de mysql de docker hub y ejecuté un contenedor desde esa imagen y creé una base de datos y algunas tablas en ese contenedor, y comprometí los cambios en una nueva imagen. Pero cuando ejecuto un contenedor de mi nueva imagen, no hay bases de datos que haya creado. ¿Cómo lograr esto? No quiero usar volúmenes montados porque quiero vincular este contenedor con otro contenedor de mi aplicación para que pueda insertarse y actualizarse en db.
No sé qué imagen está usando, pero creo que cada Dockerfile de imágenes mysql oficiales tiene el siguiente comando:
VOLUME /var/lib/mysqllo que significa que todos los datos mysql van al volumen. De los documentos de volumen de la ventana acoplable , mencionaron especialmente que:
> Changes to a data volume will not be included when you update an image.Y esta es la causa raíz de la pérdida de sus datos en un contenedor recién iniciado.
Para su pregunta:
¿Cómo lograr esto?
Puede usar volúmenes montados o crear un contenedor de volumen de datos , luego ejecutar el contenedor mysql con la opción --volumes-from . Los enlaces anteriores contienen una guía paso a paso de cómo hacerlo.
No quiero usar volúmenes montados porque quiero vincular este contenedor con otro contenedor de mi aplicación para que pueda insertarse y actualizarse en db
No sé qué otras preocupaciones tiene sobre los volúmenes montados, pero por lo que puedo decir, el uso de volúmenes montados no le impide vincular contenedores.
Espero que esto te ayude.