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