如何在Dockerfile中的bash中定义一行中的几个变量?
在我的Dockerfile中,我使用如下结构逐个设置环境变量:如何在Dockerfile中的bash中定义一行中的几个变量?,bash,docker,Bash,Docker,在我的Dockerfile中,我使用如下结构逐个设置环境变量: RUN export PATH="/root/.rbenv/shims:$PATH" RUN export RUBY_PATH="/root/.rbenv/shims/ruby" 有没有办法把它合并成一行,比如 RUN export PATH="/root/.rbenv/shims:$PATH" && export RUBY_PATH="/root/.rbenv/shims/ruby" ?运行导出是不可操作的;每
RUN export PATH="/root/.rbenv/shims:$PATH"
RUN export RUBY_PATH="/root/.rbenv/shims/ruby"
有没有办法把它合并成一行,比如
RUN export PATH="/root/.rbenv/shims:$PATH" && export RUBY_PATH="/root/.rbenv/shims/ruby"
?
运行导出
是不可操作的;每个RUN
命令都会启动一个新的shell,并且环境变量不会被持久化。为此,您需要ENV
。更好的方法是将东西直接安装到“正常”系统路径中,比如让解释器成为/usr/bin/ruby
;因为一个映像通常只打包一个应用程序,所以您不需要像rbenv这样的工具来管理多个版本的解释器。在Dockerfile中,您根本无法在bash中定义变量,至少这些变量在定义它们的单次运行命令之后仍然没有任何意义。同意Devid,导出在docker中根本不会持久化ENV,您必须使用ENV。下面是ENV的语法ENV PATH=“/root/.rbenv/shimmes:$PATH”RUBY_PATH=“/root/.rbenv/shimmes/RUBY”
运行导出是不可操作的;每个RUN
命令都会启动一个新的shell,并且环境变量不会被持久化。为此,您需要ENV
。更好的方法是将东西直接安装到“正常”系统路径中,比如让解释器成为/usr/bin/ruby
;因为一个映像通常只打包一个应用程序,所以您不需要像rbenv这样的工具来管理多个版本的解释器。在Dockerfile中,您根本无法在bash中定义变量,至少这些变量在定义它们的单次运行命令之后仍然没有任何意义。同意Devid,导出在docker中根本不会持久化ENV,您必须使用ENV。下面是ENV的语法ENV PATH=“/root/.rbenv/shimmes:$PATH”RUBY_PATH=“/root/.rbenv/shimmes/RUBY”