别名服务环境var在Docker容器中

时间:2015-04-28 17:24:15

标签: docker environment-variables docker-compose

我使用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

但首先,它不起作用,其次,它看起来不是最好的方式。

1 个答案:

答案 0 :(得分:0)

当一个容器链接到另一个容器时,它会设置环境变量,但也会设置主机条目。例如,

ubuntu:
    links:
        rethinkdb:rethinkdb 

将允许ubuntu ping rethinkdb并让它解析IP地址。这样您就可以设置RETHINKDB_HOST=rethinkdb。但是,如果您依赖该端口的变量,这将无法工作,但除了添加启动脚本或修改CMD之外,这是我唯一能想到的。

例如,如果您要修改当前设置为CMD的{​​{1}},只需将其更改为前置变量分配,例如

command: service rethink start

如果您使用启动脚本,方法将类似,您只需在服务启动之前将该变量赋值添加为一行