Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

412
Visualizações
crear una base de datos de postgres si no existe en el inicio de docker-compose

Tengo el siguiente archivo docker-compose:

 version: '3.5' services: postgres: container_name: postgres_container image: postgres environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} PGDATA: /data/postgres volumes: - postgres:/data/postgres onrun: psql -h=localhost -P=${POSTGRES_PASSWORD} -U=${POSTGRES_USER} -tc "SELECT 1 FROM pg_database WHERE datname = 'premiership'" | grep -q 1 || psql -h=localhost -P=${POSTGRES_PASSWORD}-U=${POSTGRES_USER}c "CREATE DATABASE premiership" ports: - "5432:5432" networks: - postgres restart: unless-stopped

Lo anterior no funciona porque no hay onrun en los servicios docker-compose.

Todo lo que quiero hacer es crear una base de datos si no existe, pero esto es increíblemente difícil porque no sé cuándo está activo el servicio.

Además, no es fácil hacer esto en postgres. Intenté mapear un volumen para que se ejecutara un initdb.sql:

 volumes: - postgres:/data/postgres - ./initdb/1_schema.sql:/docker-entrypoint-initdb.d/1_schema.sql

1_schema.sql se ve así:

 SELECT datname FROM pg_database WHERE datname='premiership''; IF datname=' premiership' THEN CREATE DATABASE premiership PASSWORD 'test'; END IF;

La base de datos no se crea y cuando ejecuto docker-compose logs no veo nada sobre la ejecución del script.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

¿Ha intentado configurar la variable POSTGRES_DB en su entorno docker-compose.yml ?

 image: postgres environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} POSTGRES_DB: premiership PGDATA: /data/postgres volumes:

ver https://hub.docker.com/_/postgres :

POSTGRES_DB

Esta variable de entorno opcional se puede utilizar para definir un nombre diferente para la base de datos predeterminada que se crea cuando se inicia la imagen por primera vez. Si no se especifica, se utilizará el valor de POSTGRES_USER .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda