Вот мой простой сценарий, у меня есть простая Flask
приложения, которые подключаются к Postgres таким образом:Как инициализировать базу данных на контейнере объема данных?
SQLALCHEMY_DATABASE_URI='postgresql://username:[email protected]:5432/myproj'
И у меня есть простой 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"
мне нужно обед сделал самому колба скрипт, который создает таблицы для моего приложения:
export FLASK_APP='./myproj/__init__.py'
flask createdbs
Я поставил эти 2 операции в Dockerfile
из мой сервис web
, но поскольку мой сервис и сервис postgres
имеют отношение depends_on
, хост postgres db не доступен на этапе строительства.
Любое предложение о наилучшем способе достижения этого? Я хочу избежать хаков, я бы предпочел уважать правильный рабочий процесс Докера.