我正在从postgres图像构建docker图像,我想用一些数据作为种子。
我正在遵循文档的initialization-scripts部分。
但是我现在面临的问题是,我的初始化脚本需要ssh到远程数据库并从那里哑数据。基本上是这样的:
ssh remote.host "pg_dump -U user -d somedb" > some.sql
但这会失败,并显示错误ssh: command not found
通常,现在的问题是如何从docker容器SSH到远程服务器。在这种情况下,作为植入postgres数据库的初始化步骤的一部分,我具体如何从docker容器SSH到远程数据库服务器?
答案 0 :(得分:1)
一般来说,您不要以这种方式做事。典型的Docker映像仅包含它们正在运行的服务器和一些核心工具,但是ssh
或curl
之类的网络客户端通常不包含在其中。在ssh
的特定情况下,安全地管理所需的凭据也很棘手(并非不可能,但并不明显)。
在您的特定情况下,我可能会重新安排内容,以便您的脚本没有硬性假设数据库在本地运行。设置一个空的数据库容器,然后从主机中运行脚本 ,以该空数据库为目标。甚至可以将PGHOST
和PGPORT
环境变量设置为指向您的主机的主机名和您在其上发布数据库接口的端口,然后未经修改地运行该脚本。
仔细查看该特定命令,您可能还会发现设置cron作业来运行该特定数据库转储并将内容放在某个位置会更好。然后,开发人员无需连接到实时数据库服务器即可获取数据快照,并且您可以限制可以访问的人数。拥有此转储文件后,可以使用/docker-entrypoint-initdb.d
机制使其在第一次启动时加载。