sql >> Databáze >  >> RDS >> PostgreSQL

Spusťte skript za vstupním bodem kontejneru v docker-compose

Přepisujete původní command a v tomto skriptu nespustíte postgres, což je důvod, proč vaše databáze není dostupná.

Inicializaci databáze můžete umístit do adresáře vstupního bodu kontejneru:/docker-entrypoint-initdb.d . Tím se spustí všechny *.sh a *.sql soubory v tomto adresáři a nedotkne se původního command .
Všechny soubory v tomto adresáři jsou automaticky spuštěny v abecedním pořadí při vytváření kontejneru . Proto vytvořte svazek pro přidání skriptů / souborů SQL do vstupního bodu a nechte je spustit kontejner. Toto je popsáno v oficiální dokumentaci postgres, sekce "Jak rozšířit tento obrázek" .

Váš nový soubor se poté změní na něco takového:

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

zatímco místní adresář, např. db-init-scripts , obsahuje vaše inicializační skripty (pokud chcete, přejmenujte jej). Zkopírujte create_db.sh do této složky a bude automaticky spuštěn, když vytvoříte nový kontejner.

Tento adresář vstupních bodů sleduje několik databázových obrazů, což je velmi pohodlné.

Váš container_name: postgres zdá se nadbytečné.




  1. Jaká je definice mohutnosti v SQL

  2. Jak nainstalovat Gnatcoll Postgres na Linux Centos 7

  3. Oracle Partition by ID a subpartition by DATE s intervalem

  4. Co způsobuje chybějící pravou závorku v SQL?