sách gpt4 ai đã đi

postgresql - 使用一些数据初始化 PostgreSQL docker 容器的最佳实践

In lại 作者:行者123 更新时间:2023-11-29 12:57:52 46 4
mua khóa gpt4 Nike

我创建了 docker 镜像,里面运行 PostgreSQL 并暴露 5432 端口。此图像内部不包含任何数据库。容器是一个空的 PostgreSQL 数据库服务器。

我想在(或期间)“docker run”命令中:

  • 附加数据库文件
  • 通过执行sql查询创建数据库
  • 从转储中恢复数据库

我不想在容器关闭后保留数据。它只是一个临时开发服务器。

我怀疑可以让我的“docker run”命令字符串非常短/简单。

可能可以在运行命令中使用 db/sql/dump 挂载一些外部文件夹,然后在容器初始化期间创建数据库。

完成此任务的最佳/推荐方法和最佳实践是什么?可能有人可以指出相应的 docker 示例。

1 Câu trả lời

这是一个很好的问题,可能其他人不止一次地问过自己。

根据 docker 指南,您不会在 RUN 命令中执行此操作。相反,您会在 Dockerfile 中为自己创建一个 ENTRYPOINT 或 CMD,它调用自定义 shell 脚本而不是直接调用 postgres 进程。在这种情况下,数据库将在“真实”文件系统中创建,但随后会在容器关闭期间被清理。

这将如何运作?容器将启动,像往常一样调用 ENTRYPOINT 或 CMD 并使用 init 脚本来填充 DB。然后在容器停止的那一刻,同一个脚本将收到一个信号并手动删除数据库内容。

CMD ["cleanAndRun.sh"]

取自 Docker 文档并根据您的需要进行修改的草图脚本“cleanAndRun.sh”。请记住,这只是草图,需要修改:

#!/bin/sh

# The script that is called in the trap must also stop the DB, so below call to
# dropdb is not enough, it just demonstrates how to call anything in the stop-container scenario!
trap "dropdb " HUP INT QUIT TERM

# init your DB -every- time container starts


# start your postgres DB
postgres

echo "exited $0"

关于postgresql - 使用一些数据初始化 PostgreSQL docker 容器的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38433835/

46 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com