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

我使用Docker Compose来启动我的容器。 我有一个RethinkDB服务容器,公开以下env APP_RETHINKDB_1_PORT_28015_TCP_ADDR的主机端口(除其他外): APP_RETHINKDB_1_PORT_28015_TCP_ADDR

但是,我的应用程序必须将此主机作为名为RETHINKDB_HOST的env RETHINKDB_HOST

我的问题是:如何启动容器时,给定的envvariables(最好是用Dockerish的方式)呢? 我试过了:

 env_file: .env environment: - RETHINKDB_HOST=$APP_RETHINKDB_1_PORT_28015_TCP_ADDR 

但首先,这是行不通的,其次,这看起来不是最好的方式。

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

 ubuntu: links: rethinkdb:rethinkdb 

将允许ubuntu ping rethinkdb并让它parsingIP地址。 这将允许您设置RETHINKDB_HOST=rethinkdb 。 但是,如果您依赖于该端口的variables,则这将不起作用,但除了添加启动脚本或修改CMD之外,这是唯一可以想到的。

如果你想修改你的CMD ,它现在被设置为command: service rethink start ,例如,把它改为prependvariables赋值,例如

 command: sh -c 'RETHINKDB_HOST=$APP_RETHINKDB_1_PORT_28015_TCP_ADDR && service rethink start' 

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

您尝试使用的环境variables名称APP_RETHINKDB_1_PORT_28015_TCP_ADDR已包含端口号。 这已经是一种“硬编码”了。 我想你只需要使用这个

 environment: - RETHINKDB_HOST=28015