我使用Docker Compose来旋转我的容器。我有一个RethinkDB服务容器,它公开(以及其他)以下env var中的主机端口:APP_RETHINKDB_1_PORT_28015_TCP_ADDR
。
但是,我的应用必须以名为RETHINKDB_HOST
的env var接收此主机。
我的问题是:在启动容器时,如何将给定的env var别名为所需的env var(最好以最多Dockerish方式)?我试过了:
env_file: .env
environment:
- RETHINKDB_HOST=$APP_RETHINKDB_1_PORT_28015_TCP_ADDR
但首先,它不起作用,其次,它看起来不是最好的方式。
答案 0 :(得分:0)
当一个容器链接到另一个容器时,它会设置环境变量,但也会设置主机条目。例如,
ubuntu:
links:
rethinkdb:rethinkdb
将允许ubuntu ping rethinkdb
并让它解析IP地址。这样您就可以设置RETHINKDB_HOST=rethinkdb
。但是,如果您依赖该端口的变量,这将无法工作,但除了添加启动脚本或修改CMD
之外,这是我唯一能想到的。
例如,如果您要修改当前设置为CMD
的{{1}},只需将其更改为前置变量分配,例如
command: service rethink start
如果您使用启动脚本,方法将类似,您只需在服务启动之前将该变量赋值添加为一行