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

Ejecute el script después del punto de entrada del contenedor en docker-compose

Está anulando el command original y no inicia postgres en este script, por lo que su base de datos no está disponible.

Puede poner la inicialización de su base de datos en el directorio del punto de entrada del contenedor:/docker-entrypoint-initdb.d . Esto ejecuta todos los *.sh y *.sql archivos en este directorio y no toca el command original .
Todos los archivos en este directorio se ejecutan automáticamente en orden alfabético en la creación del contenedor . Por lo tanto, cree un volumen para agregar sus scripts/archivos sql al punto de entrada y deje que el contenedor los ejecute. Esto se describe en la documentación oficial de postgres, sección "Cómo extender esta imagen" .

Su archivo de redacción luego cambia a algo como esto:

postgres:
  build: ./postgres
  volumes:
    - /shared_folder/postgresql:/var/lib/postgresql
    - ./db-init-scripts:/docker-entrypoint-initdb.d
  ports:
    - "5432:5432"

mientras que un directorio local, p. db-init-scripts , contiene sus scripts de inicialización (cámbiele el nombre si lo desea). Copie create_db.sh a esta carpeta y se ejecutará automáticamente cuando cree un nuevo contenedor.

Varias imágenes de bases de datos observan este directorio de punto de entrada, lo cual es muy conveniente.

Su container_name: postgres parece redundante.