DOCKER - Airflow 当我 docker 撰写时,如何在 Airflow DB 中初始化我的 postgres 脚本
DOCKER - Airflow How can i Init my postgres scripts in Airflow DB when i docker compose
我正在测试一些我必须将我的 Postgres DB DDL 初始化到 airflow Postgres DB 的东西,当我组合它时它应该自动初始化一次,因为它会在 airflow DB 正常工作之后被缓存。谢谢
根据最后一条评论的要求:将您自己的数据库添加到 Airflow Docker-compose 文件中:
将这段代码作为服务放置在其他服务中:
mypostgres:
image: postgres:13
environment:
POSTGRES_USER: mydbuser
POSTGRES_PASSWORD: securepassword
POSTGRES_DB: mydb
volumes:
- ./database:/var/lib/postgresql/data
- ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
restart: always
确保当前目录中有 database-directory 和 init-database.sh 文件(否则卷映射失败)
我找到了一个有效的解决方案,并在您 docker 完成后初始化您的脚本。
专业提示:
如果你想添加更多文件并且你已经初始化了气流数据库或者你的数据库你可以做的是 docker-compose down --volume 这将自动删除所有数据目录中的数据。为了使 init 工作 Postgres 数据目录必须为空
postgres:
image: postgres:13
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_DB: airflow
ports:
- "5432:5432"
volumes:
- postgres-db-volume:/var/lib/postgresql/data
- /path/to/my/host/folder/filename.sql:/docker-entrypoint-initdb.d/filename.sql
healthcheck:
test: ["CMD", "pg_isready", "-U", "airflow"]
interval: 5s
retries: 5
restart: always
volumes:
postgres-db-volume:
我正在测试一些我必须将我的 Postgres DB DDL 初始化到 airflow Postgres DB 的东西,当我组合它时它应该自动初始化一次,因为它会在 airflow DB 正常工作之后被缓存。谢谢
根据最后一条评论的要求:将您自己的数据库添加到 Airflow Docker-compose 文件中:
将这段代码作为服务放置在其他服务中:
mypostgres:
image: postgres:13
environment:
POSTGRES_USER: mydbuser
POSTGRES_PASSWORD: securepassword
POSTGRES_DB: mydb
volumes:
- ./database:/var/lib/postgresql/data
- ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh
restart: always
确保当前目录中有 database-directory 和 init-database.sh 文件(否则卷映射失败)
我找到了一个有效的解决方案,并在您 docker 完成后初始化您的脚本。
专业提示: 如果你想添加更多文件并且你已经初始化了气流数据库或者你的数据库你可以做的是 docker-compose down --volume 这将自动删除所有数据目录中的数据。为了使 init 工作 Postgres 数据目录必须为空
postgres:
image: postgres:13
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_DB: airflow
ports:
- "5432:5432"
volumes:
- postgres-db-volume:/var/lib/postgresql/data
- /path/to/my/host/folder/filename.sql:/docker-entrypoint-initdb.d/filename.sql
healthcheck:
test: ["CMD", "pg_isready", "-U", "airflow"]
interval: 5s
retries: 5
restart: always
volumes:
postgres-db-volume: