我正在尝试启动 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) 中。