使用docker运行一堆-e标志甚至是.env似乎很麻烦.
有没有简单的方法将所有主机env变量传递给docker容器
最佳答案
我同意那些暗示你可能不想做你想做的事情的评论者.然而:
如果(a)你对具有特定前缀的环境变量感兴趣,并且(b)你的变量不包含任何空格,那么这样的东西就可以工作……在这里,我将所有的XDG_ *变量暴露给一个docker容器:
$docker run -it --rm --env-file <(env | grep XDG) alpine sh
/ # env | grep XDG
XDG_SEAT=seat0
XDG_SESSION_TYPE=x11
XDG_SESSION_ID=2
XDG_RUNTIME_DIR=/run/user/21937
XDG_MENU_PREFIX=gnome-
XDG_CURRENT_DESKTOP=GNOME
XDG_SESSION_DESKTOP=gnome
XDG_VTNR=2
如果你真的想要所有的环境变量,你可能需要编写一个较小的包装器程序来生成正确的引用输出(处理包含空格的变量),这将排除跨越多行的东西,比如BASH_FUNC_ *变量.然后你将使用你的包装器代替env | grep …在前面的例子中.