gpt4 book ai didi

postgresql - 在postgres容器中创建多个数据库

转载 作者:行者123 更新时间:2023-12-02 19:45:21 25 4
gpt4 key购买 nike

我的应用程序需要3个数据库。我正在使用PostgreSQL。
如何一次性启动所有3个数据库。这3个表和脚本均不同。对于其中的每一个,都通过复制*.sql来执行Dockerfile文件。
我以常规方式尝试。没用
Dockerfile:

FROM postgres
ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD postgres

ENV POSTGRES_DB my_db_dev
COPY /devdb.sql /docker-entrypoint-initdb.d/


ENV POSTGRES_DB my_db_test
COPY /testdb.sql /docker-entrypoint-initdb.d/


ENV POSTGRES_DB my_db_prod
COPY /proddb.sql /docker-entrypoint-initdb.d/
在这里,只有最后一个数据库(my_db_prod)正在启动。
我如何一次将所有三个组成?

最佳答案

ENV Dockerfile命令在构建时设置环境变量。COPY也在构建时执行,基本上覆盖了docker-entrypoint-initdb.d当您调用这些操作时,最新执行的操作将覆盖前一个操作,因此图像最终状态将具有POSTGRES_DB=my_db_prod,而docker-entrypoint-initdb.d将具有proddb.sql的内容。
该数据库不是在构建时创建的。相反,它是根据/docker-entrypoint-initdb.d/ (/proddb.sql )POSTGRES_DB my_db_prod的指令在运行时创建的,因此,这是从构建时开始的一系列命令离开镜像的状态。
要创建多个数据库,您可以将3个入口点的脚本合并到一个数据库中,或者更好的是,每个DB具有一个脚本,并使这些脚本读取不同的ENV:

COPY ./create_second_db.sql /docker-entrypoint-initdb.d/create_second_db.sql
COPY ./create_third_db.sql /docker-entrypoint-initdb.d/create_third_db.sql
Here是一个完整的示例,可以节省一些时间。

关于postgresql - 在postgres容器中创建多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63736434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com