postgresql - 如何从 Docker 容器 SSH 到远程服务器
问题描述
我正在从 postgres 图像中构建一个 docker 图像,我想用一些数据来播种它。
我正在关注文档的初始化脚本部分。
但我现在面临的问题是,我的初始化脚本需要 ssh 到远程数据库并从那里获取哑数据。基本上是这样的:
ssh remote.host "pg_dump -U user -d somedb" > some.sql
但这失败并出现错误ssh: command not found
现在的问题是,一般来说,我如何从 docker 容器 ssh 到远程服务器。在这种情况下,具体来说,作为播种 postgres 数据库的初始化步骤的一部分,我如何从 docker 容器 ssh 到远程数据库服务器?
解决方案
作为一般规则,您不会以这种方式做事。典型的 Docker 映像仅包含它们正在运行的服务器和一些核心工具,但网络客户端喜欢ssh
或curl
通常不属于其中的一部分。在特定情况下ssh
,安全管理所需的凭据也很棘手(并非不可能,但并不明显)。
在您的特定情况下,我可能会重新安排一些事情,以便您的脚本没有硬假设数据库在本地运行。预配一个空数据库容器,然后从针对该空数据库的主机运行脚本。甚至可以将环境变量PGHOST
和PGPORT
环境变量设置为指向主机的主机名和发布数据库接口的端口,然后不加修改地运行该脚本。
仔细查看该特定命令,您还可能会发现最好设置一个 cron 作业来运行该特定数据库转储并将内容放在某处。然后,开发人员无需连接到实时数据库服务器即可获得数据的快照,并且您可以限制可以访问的人数。一旦你有了这个转储文件,你就可以使用这个/docker-entrypoint-initdb.d
机制来让它在第一次启动时被加载。
推荐阅读
- regex - 正则表达式:如何仅替换文件中的特定字符串
- django - Beanstalk 在子目录中找不到 Django 应用程序
- javascript - 如何使用 div id 动态移动/定位模态?
- svg - 如何制作从 div 底部到顶部的 SVG 高度动画?
- android - 从片段访问 content_main.xml 的视图?
- r - 避风港:read_dta 错误()“无法解析 /Users/folder/my_data.dta:无法分配内存。”
- spring - Solr 文档根据类型自定义映射
- android - Flutter Hero 动画在 ios 上的行为不同
- azure - Azure 认知搜索:搜索文档内容中的字符串 + 文档名称中的字符串
- python - 当线程已经在运行时,tkinter 中的多线程错误