gpt4 book ai didi

postgresql - Docker-Compose Postgresql 导入转储

转载 作者:IT老高 更新时间:2023-10-28 12:46:15 24 4
gpt4 key购买 nike

我有一个关于 docker 和 postgres 的问题。每次 docker 启动并想要导入给定的转储时,我都会设置一个新的 postgres 数据库。

我的问题是这样的,但答案对我来说还不够:Docker postgres does not run init file in docker-entrypoint-initdb.d

Docker 编写:

postgres:
environment:
- POSTGRES_USER=****
- POSTGRES_PASSWORD=****
- POSTGRES_DB=****
build:
context: .
dockerfile: dockerfile-postgres

我的 Dockerfile:(我已经用 .sh 结尾的脚本尝试过)

FROM postgres
ADD dump.sql /docker-entrypoint-initdb.d/

根据https://hub.docker.com/_/postgres/必须使用 dump.sql 导入数据库。

使用 docker 启动应用程序只会给出:

postgres_1     | LOG:  invalid record length at 0/1708600
postgres_1 | LOG: redo is not required
postgres_1 | LOG: MultiXact member wraparound protections are now enabled
postgres_1 | LOG: database system is ready to accept connections
postgres_1 | LOG: autovacuum launcher started

除了我测试了我的数据库是否已经导入之外,我的数据库中没有表。我在做什么错(文件在目标系统上是读取和可执行的)?用psql导入没问题,所以我的dump是正确的。

我希望你能帮助我,我想提前感谢你。

最佳答案

好的,我找到了窍门,我必须执行“docker-compose rm”才能执行此文件夹中的脚本和 sql 文件。一旦构建并且未删除,init 文件夹将被忽略。

更新我又遇到了这个问题,这次删除 docker 创建的图像解决了这个问题。

关于postgresql - Docker-Compose Postgresql 导入转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37834435/

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