Docker-compose postgres 无法在新创建的数据库中初始化我的表
Docker-compose postgres cant init my tables in newly created database
我正在尝试在 Docker 中自动执行 INIT 过程,所以每当我 docker-compose up 在一个空数据目录中时,它将创建两个 DBS,第一个是 Airflow,第二个是我的测试数据库,例如,当我 docker-编写 Postgres 运行 新测试数据库中的第一个 SQL 文件以创建表时。但是,它没有 运行 插入 SQL 文件我已经安装在 docker-入口点 它是什么 运行 Airflow 数据库中的那些文件谁能告诉我如何在我的测试数据库中插入所有元数据表而不是气流,谢谢
我的docker-撰写文件
postgres:
image: postgres:13
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_MULTIPLE_DATABASES: airflow ,docker_airflow
ports:
- "5432:5432"
volumes:
- postgres-db-volume:/var/lib/postgresql/data
- ../data-platform/db/metadata/init/1._ddl.sql:/docker-entrypoint-initdb.d/1._ddl.sql
- ../data-platform/db/metadata/init/2._init.sql:/docker-entrypoint-initdb.d/2._init.sql
- ../data-platform/db/metadata/init/3._props.sql:/docker-entrypoint-initdb.d/3._props.sql
- ../data-platform/db/metadata/init/4.ge_ddl.sql:/docker-entrypoint-initdb.d/4.ge_ddl.sql
- ../data-platform/db/metadata/init/5.ge_init.sql:/docker-entrypoint-initdb.d/5.ge_init.sql
- ../data-platform/db/metadata/init/6._be_lu_nl.sql:/docker-entrypoint-initdb.d/6._be_lu_nl.sql
- ../data-platform/db/metadata/init/7._registration_nl_lifecycle.sql:/docker-entrypoint-initdb.d/7._registration_nl_lifecycle.sql
healthcheck:
test: ["CMD", "pg_isready", "-U", "airflow"]
interval: 5s
retries: 5
restart: always
当运行设置脚本时,您需要使用正确的信息设置每个脚本。它们 运行 使用默认凭据,这意味着它们还连接到默认数据库。
您可以在每个文件的开头添加指令,以便 psql 使用 \c somedb
连接到所需的数据库。它需要在每个脚本中,因为它们 运行 分开并且不会在 运行 之间保存任何信息。
我正在尝试在 Docker 中自动执行 INIT 过程,所以每当我 docker-compose up 在一个空数据目录中时,它将创建两个 DBS,第一个是 Airflow,第二个是我的测试数据库,例如,当我 docker-编写 Postgres 运行 新测试数据库中的第一个 SQL 文件以创建表时。但是,它没有 运行 插入 SQL 文件我已经安装在 docker-入口点 它是什么 运行 Airflow 数据库中的那些文件谁能告诉我如何在我的测试数据库中插入所有元数据表而不是气流,谢谢
我的docker-撰写文件
postgres:
image: postgres:13
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_MULTIPLE_DATABASES: airflow ,docker_airflow
ports:
- "5432:5432"
volumes:
- postgres-db-volume:/var/lib/postgresql/data
- ../data-platform/db/metadata/init/1._ddl.sql:/docker-entrypoint-initdb.d/1._ddl.sql
- ../data-platform/db/metadata/init/2._init.sql:/docker-entrypoint-initdb.d/2._init.sql
- ../data-platform/db/metadata/init/3._props.sql:/docker-entrypoint-initdb.d/3._props.sql
- ../data-platform/db/metadata/init/4.ge_ddl.sql:/docker-entrypoint-initdb.d/4.ge_ddl.sql
- ../data-platform/db/metadata/init/5.ge_init.sql:/docker-entrypoint-initdb.d/5.ge_init.sql
- ../data-platform/db/metadata/init/6._be_lu_nl.sql:/docker-entrypoint-initdb.d/6._be_lu_nl.sql
- ../data-platform/db/metadata/init/7._registration_nl_lifecycle.sql:/docker-entrypoint-initdb.d/7._registration_nl_lifecycle.sql
healthcheck:
test: ["CMD", "pg_isready", "-U", "airflow"]
interval: 5s
retries: 5
restart: always
当运行设置脚本时,您需要使用正确的信息设置每个脚本。它们 运行 使用默认凭据,这意味着它们还连接到默认数据库。
您可以在每个文件的开头添加指令,以便 psql 使用 \c somedb
连接到所需的数据库。它需要在每个脚本中,因为它们 运行 分开并且不会在 运行 之间保存任何信息。