Hier ist mein einfaches Szenario, Ich habe einen einfach Flask
App, die auf diese Weise zu einer Postgres verbinden:Wie initialisiert man eine Datenbank auf einem Datenvolumencontainer?
SQLALCHEMY_DATABASE_URI='postgresql://username:[email protected]:5432/myproj'
Und ich habe einen einfache docker-compose.yml
:
version: '2'
services:
postgres:
image: postgres:latest
volumes_from:
- data
environment:
POSTGRES_PASSWORD: secretpassword
POSTGRES_USER: username
POSTGRES_DB: myproj
ports:
- "5432:5432"
web:
build: .
volumes_from:
- app
ports:
- "5000:5000"
depends_on:
- postgres
data:
image: postgres:latest
volumes:
- /var/lib/postgresql/data
command: "true"
app:
build: .
volumes:
- .:/myproj
command: "true"
ich zum Mittagessen brauche einen von mir selbst gemacht Kolben-Skript, das die Tabellen für meine App erstellt:
export FLASK_APP='./myproj/__init__.py'
flask createdbs
ich habe diese 2-Operation in den Dockerfile
von legen mein web
Service, aber weil mein Dienst und der postgres
Dienst eine depends_on
Beziehung haben, ist der postgres db Host während der Bauphase nicht verfügbar.
Irgendwelche Vorschläge auf dem besten Weg, dies zu erreichen? Ich möchte Hacks vermeiden, ich würde lieber einen korrekten Docker-Workflow respektieren.