首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Dockerfile中,如何更新PATH环境变量?

Dockerfile中,如何更新PATH环境变量?
EN

Stack Overflow用户
提问于 2014-11-24 03:58:33
回答 3查看 342.9K关注 0票数 569

我有一个dockerfile,它从源代码下载并构建GTK,但是下面这行代码没有更新我的镜像的环境变量:

RUN PATH="/opt/gtk/bin:$PATH"
RUN export PATH

我读到我应该使用ENV来设置环境值,但以下指令似乎也不起作用:

ENV PATH /opt/gtk/bin:$PATH

这是我的整个Dockerfile:

FROM ubuntu
RUN apt-get update
RUN apt-get install -y golang gcc make wget git libxml2-utils libwebkit2gtk-3.0-dev libcairo2 libcairo2-dev libcairo-gobject2 shared-mime-info libgdk-pixbuf2.0-* libglib2-* libatk1.0-* libpango1.0-* xserver-xorg xvfb

# Downloading GTKcd
RUN wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.12/gtk+-3.12.2.tar.xz
RUN tar xf gtk+-3.12.2.tar.xz
RUN cd gtk+-3.12.2

# Setting environment variables before running configure
RUN CPPFLAGS="-I/opt/gtk/include"
RUN LDFLAGS="-L/opt/gtk/lib"
RUN PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
RUN export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
RUN ./configure --prefix=/opt/gtk
RUN make
RUN make install

# running ldconfig after make install so that the newly installed libraries are found.
RUN ldconfig

# Setting the LD_LIBRARY_PATH environment variable so the systems dynamic linker can find the newly installed libraries.
RUN LD_LIBRARY_PATH="/opt/gtk/lib"

# Updating PATH environment program so that utility binaries installed by the various libraries will be found.
RUN PATH="/opt/gtk/bin:$PATH"
RUN export LD_LIBRARY_PATH PATH

# Collecting garbage
RUN rm -rf gtk+-3.12.2.tar.xz

# creating go code root
RUN mkdir gocode
RUN mkdir gocode/src
RUN mkdir gocode/bin
RUN mkdir gocode/pkg

# Setting the GOROOT and GOPATH enviornment variables, any commands created are automatically added to PATH
RUN GOROOT=/usr/lib/go
RUN GOPATH=/root/gocode
RUN PATH=$GOPATH/bin:$PATH
RUN export GOROOT GOPATH PATH
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-03 19:39:55

您可以在Dockerfile中使用Environment Replacement,如下所示:

ENV PATH="/opt/gtk/bin:${PATH}"
票数 887
EN

Stack Overflow用户

发布于 2014-11-24 09:18:38

虽然Gunter发布的答案是正确的,但它与我已经发布的答案没有什么不同。问题不在于ENV指令,而在于后续指令RUN export $PATH

一旦您在Dockerfile文件中通过ENV声明了环境变量,就没有必要导出它们。

一旦删除了RUN export ...行,就成功构建了我的映像

票数 60
EN

Stack Overflow用户

发布于 2018-10-17 02:47:16

这是不鼓励的(如果你想创建/分发一个干净的Docker镜像),因为PATH变量是由/etc/profile脚本设置的,所以这个值可以被覆盖。

head /etc/profile

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

在Dockerfile的末尾,您可以添加:

RUN echo "export PATH=$PATH" > /etc/environment

因此为所有用户设置了路径。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27093612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档