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é.