PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Execute o script após o ponto de entrada do contêiner no docker-compose


Você está substituindo o command original e você não inicia o postgres neste script e é por isso que seu banco de dados não está disponível.

Você pode colocar a inicialização do banco de dados no diretório de ponto de entrada do contêiner:/docker-entrypoint-initdb.d . Isso executa todos os *.sh e *.sql arquivos neste diretório e não toca no command original .
Todos os arquivos neste diretório são executados automaticamente em ordem alfabética na criação do contêiner . Portanto, crie um volume para adicionar seus scripts/arquivos sql ao ponto de entrada e deixe o contêiner executá-los. Isso está descrito na documentação oficial do postgres, seção "Como estender esta imagem" .

Seu arquivo de composição muda para algo assim:
postgres:
  build: ./postgres
  volumes:
    - /shared_folder/postgresql:/var/lib/postgresql
    - ./db-init-scripts:/docker-entrypoint-initdb.d
  ports:
    - "5432:5432"

enquanto um diretório local, por exemplo db-init-scripts , contém seus scripts de inicialização (renomeie-o se desejar). Copie create_db.sh para esta pasta e será executado automaticamente quando você criar um novo container.

Várias imagens de banco de dados observam esse diretório de ponto de entrada, o que é muito conveniente.

Seu container_name: postgres parece redundante.