4

我使用 Docker Compose 来启动我的容器。我有一个 RethinkDB 服务容器,它在以下环境变量中公开(以及其他)主机端口:APP_RETHINKDB_1_PORT_28015_TCP_ADDR.

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

我的问题是:如何在启动容器时(最好以最 Dockerish 的方式)将给定的 env var 别名为所需的?我试过了:

env_file: .env
environment:
  - RETHINKDB_HOST=$APP_RETHINKDB_1_PORT_28015_TCP_ADDR

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

4

2 回答 2

0

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

ubuntu:
    links:
        rethinkdb:rethinkdb 

将允许 ubuntuping rethinkdb并让它解析 IP 地址。这将允许您设置RETHINKDB_HOST=rethinkdb. 但是,如果您依赖于端口的该变量,这将不起作用,但这是除了添加启动脚本或修改您的CMD.

例如,如果您想修改CMD当前设置为command: service rethink start的 ,只需将其更改为添加变量赋值,例如

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

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

于 2015-06-04T20:05:50.580 回答
0

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

environment:
  - RETHINKDB_HOST=28015
于 2015-07-15T13:37:41.983 回答