Ejecutar script SQL con Postgres & Docker
Muchas veces, al ejecutar un contenedor Docker para Postgres, deseamos inicializar el servidor o la base de datos creada con ciertos scripts previamente creados. En este artículo les mostraré cómo ejecutar un contenedor para Postgres agregando las dos siguientes actividades:
1. Ejecutar un script para inicializar las tablas maestras
Esto normalmente se realiza con la instrucción:
psql -U postgres veronica < veronica.sqlPero en el caso de Docker, podemos agregar el script al directorio /docker-entrypoint-initdb.d/ y Docker ejecutará automáticamente dicho script luego de iniciar el servicio de base de datos.
2. Agregar una llave para encriptación que será utilizada por la extensión pgcrypto.
Si no utilizamos docker, bastaría con realizar lo siguiente
postgres -c encrypt.key=a_secret_key
Ahora, ambas configuraciones se pueden hacer también directamente con Docker tal como se muestra en el siguiente Dockerfile:
FROM postgres:11.3 # About the author MAINTAINER Rolando Rodríguez <rolando.roc@gmail.com> # Environment variables # Set Postgres environment variables ENV POSTGRES_PASSWORD=123456 POSTGRES_USER=postgres POSTGRES_DB=sample # Get a sql script and move it to initialization scripts folder ADD https://raw.githubusercontent.com/rolandopalermo/veronica/master/veronica-app/src/main/postgres/veronica.sql /docker-entrypoint-initdb.d/ # Make sql script executable RUN chmod 744 /docker-entrypoint-initdb.d/veronica.sql # Expose the PostgreSQL port EXPOSE 5432 # Run a command, for example: $ postgres -c encrypt.key=8qxBjzCdQkwdpu CMD ["postgres", "-c", "encrypt.key=8qxBjzCdQkwdpu"]Para más información, puedes revisar el siguiente repositorio: https://github.com/rolandopalermo/dockerfiles/tree/master/postgres-run-sql-command
Comentarios
Publicar un comentario