如何为不同的用户设置环境变量

如何为不同的用户设置环境变量

我正在尝试启动 2 个 docker 容器并将其与 rails 应用程序链接在一起。此应用程序依赖于以下环境变量:

POSTGRES_PORT_5432_TCP_ADDR
POSTGRES_PORT_5432_TCP_PORT

当我以 root 身份执行 env 时,我得到了:

POSTGRES_PORT_5432_TCP_PORT=5432
POSTGRES_PORT_5432_TCP_ADDR=172.17.0.2

当我在 root 下运行它时,我没有遇到任何问题,并且它可以正常工作。但是,应用程序以 app 用户身份运行。当我以 app 身份执行 env 时:

root@f80f94948393:/home/app# sudo -u app env

我没有看到这些变量。我在 Google 上搜索了一下,并已经修改了这些文件:

/etc/环境

POSTGRES_PORT_5432_TCP_ADDR="172.17.0.2"
POSTGRES_PORT_5432_TCP_PORT="5432"

/home/app/.profile

POSTGRES_PORT_5432_TCP_PORT="5432";export POSTGRES_PORT_5432_TCP_PORT
POSTGRES_PORT_5432_TCP_ADDR="172.17.0.2";export POSTGRES_PORT_5432_TCP_ADDR

/home/应用程序/.bashrc

POSTGRES_PORT_5432_TCP_PORT="5432";export POSTGRES_PORT_5432_TCP_PORT
POSTGRES_PORT_5432_TCP_ADDR="172.17.0.2";export POSTGRES_PORT_5432_TCP_ADDR

但似乎没有什么帮助。变量没有显示给应用程序用户。

我在这里遗漏了什么?

答案1

我不知道您如何以非 root 身份运行该程序,但是当您使用 sudo 时,您可以使用 -E(参见:man sudo)来保留环境。

否则,如果您使用 bash,则可以将这些变量添加到系统范围的 .bashrc (/etc/bash.bashrc) 中。

相关内容