sql >> Base de Datos >  >> RDS >> PostgreSQL

docker postgres con datos iniciales no se conserva en las confirmaciones

El problema es que el Dockerfile de postgres declara "/var/lib/postgresql/data" como un volumen. Este es solo un directorio normal que vive fuera del sistema de archivos de unión utilizado por las imágenes. Los volúmenes viven hasta que ningún contenedor se vincula a ellos y se eliminan explícitamente.

Tienes algunas opciones:

  • Utilice --volumes-from comando para compartir datos con nuevos contenedores. Esto solo funcionará si solo hay una imagen de postgres ejecutándose a la vez, pero es la mejor solución.
  • Escriba su propio Dockerfile que crea los datos antes de declarar el volumen. Estos datos se copiarán en el volumen cuando se cree el contenedor.
  • Escriba un script de punto de entrada o cmd que llene la base de datos en tiempo de ejecución.

Todas estas sugerencias requieren que use Volúmenes para administrar los datos una vez que el contenedor se está ejecutando. Alternativamente, podría escribir su propio Dockerfile y simplemente no declarar un volumen. Luego podría usar docker commit para crear una nueva imagen después de agregar datos. Esto probablemente funcionará a corto plazo, pero definitivamente no es así como debe trabajar con contenedores:no es repetible y eventualmente se quedará sin capas en el sistema de archivos de unión.

Eche un vistazo a los documentos oficiales de Docker sobre la gestión de datos en contenedores para obtener más información.