Postgres 环境变量未在运行时加载,但出现在 ssh 中

Postgres environment variables not loaded in runtime, but appear in ssh

我正在阅读 "Getting Started with Openshift" 指南以尝试学习这些内容。我已经在我的 python 设备中成功添加并配置了一个 postgres 数据库。

如果我 运行 在齿轮本身上设置一个环境,我会看到数据库环境变量:

[]\> env |grep POSTGRESQL_DB
OPENSHIFT_POSTGRESQL_DB_HOST=x.x.x.x
OPENSHIFT_POSTGRESQL_DB_USERNAME=admindb
OPENSHIFT_POSTGRESQL_DB_PORT=5432

但是在我部署的代码中,我转储了所有设置了 logging.error(os.environ) 和 none 的 POSTGRESQL_DB 变量的环境变量。所有 python 似乎都能正确加载。

我知道我可以手动设置这些变量,但由于这些变量是由齿轮控制的,它们可能会变得陈旧。文档暗示应该设置这些变量(它们在示例代码中使用)。

您部署的代码 运行 是否通过与您登录时相同的登录 shell 环境?

让代码看到通过某些非 shell 方法启动的 shell 环境变量的常见解决方案是通过登录 shell.

启动它们

例如:

/bin/bash -lc "/whatever/you/are/launching --args stuff"

找到问题了。

在说明中,我们设置了一个 hot_deploy 标记(因此应用程序不会在提交代码更改时反弹)。说明中的下一步是添加 postgres cartridge,但在重新启动 cartridge 之前不会加载环境变量。所以反弹应用程序,一切都很好。

谢谢, 瑞安