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: