在应用环境中使用链接容器环境变量?

  发布于 2023-01-08 16:05

我有一个使用名为的环境变量的应用程序REDIS_URL.典型的REDIS_URLredis://172.17.0.5:6379/0.我希望能够REDIS_URL基于容器链接进行填充:

docker run --name redis -d redis
docker run --name firehose --link redis:redis -e REDIS_URL="redis://$REDIS_PORT_6379_TCP_ADDR:$REDIS_PORT_6379_TCP_PORT/0" -d firehose/server

但是根据我如何逃避环境变量,它们要么在我的shell中在docker运行时进行求值并且是blank(redis://:/0),要么作为文字字符串(redis://$REDIS_PORT_6379_TCP_ADDR:$REDIS_PORT_6379_TCP_PORT/0)传递.

如何REDIS_URL基于conatiner链接填充我的应用程序环境变量?

1 个回答
  • $REDIS_PORT_6379_TCP_ADDR$REDIS_PORT_6379_TCP_PORT变量不在时已知的docker run执行命令,所以没有办法从主机建造它.

    但是,有一种解决方法.在Dockerfilefirehose/server图像必须有一个CMDENTRYPOINT该决定是运行图像时,什么是执行命令.您可以在该命令周围放置一个包装器来构造REDIS_URL变量.像这样的东西:

    #!/bin/sh
    export REDIS_URL="redis://${REDIS_PORT_6379_TCP_ADDR}:${REDIS_PORT_6379_TCP_PORT}/0"
    <run command>
    

    使用包装器脚本作为CMDENTRYPOINT中的Dockerfile.

    2023-01-08 16:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有