Quiero crear una base de datos en PostgreSQL y restaurar una copia de seguridad en un contenedor docker. Puedo crear la base de datos y ejecutar el contenedor docker, y luego ejecutar pg_restore para restaurar la copia de seguridad. Mi Dockerfile es:
FROM postgres:latest ENV POSTGRES_USER postgres ENV POSTGRES_PASSWORD 123qwe ENV POSTGRES_DB docker_pg COPY createTable.sql /docker-entrypoint-initdb.d/ VOLUME /var/lib/postgresql/dataLuego ejecuto el comando para restaurar la copia de seguridad:
docker exec -i 0d96d6b59d74 pg_restore -U postgres -d docker_pg< backup_latest.sqlEstá funcionando bien.
Pero mi requisito es cuando ejecuto el comando para crear la creación de la base de datos del contenedor docker y restaurar la copia de seguridad, ambos trabajos realizados al mismo tiempo, es decir, en el momento de la creación del contenedor.
¿Cómo puedo hacer esto?
Pero mi requisito es cuando ejecuto el comando para crear la creación de la base de datos del contenedor docker y restaurar la copia de seguridad, ambos trabajos realizados al mismo tiempo, es decir, en el momento de la creación del contenedor.
El contenedor de Docker puede realizar ambas tareas; todo lo que necesita para colocar el script de restauración en la carpeta docker-entrypoint-initdb.d .
COPY createTable.sql /docker-entrypoint-initdb.d/a_createTable.sql COPY backup_latest.sql /docker-entrypoint-initdb.d/ Como cambié createTable.sql a a_createTable.sql , primero creará Table y luego restaurará la copia de seguridad.
Estos archivos de inicialización se ejecutarán en orden de nombre ordenado según lo definido por la configuración regional actual
O la otra opción es crear un solo archivo SQL y el orden será
ALL DDL # then ALL DMLasí que algo como
COPY db.sql /docker-entrypoint-initdb.d/