是否有可能让Docker在运行时共享与--volumes-from
链接的容器的环境变量,就像它与使用--link
链接的容器一样?
我在我的应用程序中使用仅数据容器来存储持久数据,我想在我的应用程序容器的入口点脚本中检查数据容器是否在运行时被引用,如果没有则取消。
我的想法是检查是否设置了数据容器的环境变量(包含暴露卷的路径),我还计划在脚本中的某些点使用它的值(例如,设置我的应用程序的数据目录)它的配置文件)。
有没有办法实现这个目标,如果不是,那么下一个最好的方式来做我描述的事情呢?
我发现docker inspect
会返回volumes-from
下的所有HostConfig.VolumesFrom
个容器。这并不能完全解决共享问题,因为我想检查一个固定值(环境变量的名称)而不是容器名称,并且还需要变量的值,但是它是'开始吧。
答案 0 :(得分:1)
有没有办法实现这一目标,如果没有,那将是什么 做我描述的事情的最好方法是什么?
您无法使用--volumes-from
将环境变量从一个容器暴露给另一个容器。
您的应用程序不一定要关心数据容器是否在运行时被引用。您应该在Dockerfile中声明VOLUME
,以便(a)应用程序将使用由VOLUME
指令产生的匿名卷初始化新数据存储,或者(b)使用在--volumes-from
命令行上使用w -v
或使用docker run
显示的卷。
启动应用程序容器(-e DATA_PATH=/path/to/my/data
)时,您可以简单地将数据卷的位置提供为环境变量。
如果您关心数据卷是否已经以某种方式“初始化”,您可以检查DATA_PATH
某个特定标志文件(if ! [ -f "$DATA_PATH/flagfile" ]; then ...
)的位置。