在Dockerfile中,如何更新PATH环境variables?

我有一个dockerfile从源代码下载和构buildGTK,但下面的行不更新我的图像的环境variables:

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 

您可以在Dockerfile使用环境replace ,如下所示:

 ENV PATH="/opt/gtk/bin:${PATH}" 

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

一旦在Dockerfile中通过ENV声明了环境variables,就不需要导出环境variables。

一旦RUN export ...行被删除,我的图像已成功build立

  • 链接和docker_compose.yml中的depends_on之间的区别
  • 如何在不使用端口映射的情况下将Docker容器的ip和端口暴露给外部docker主机?
  • 在Docker中构build时创builddynamic环境variables
  • Docker只将端口EXPOSE给主机
  • 如何从正在运行的Docker容器中读取文件和stdout
  • 如何在运行Docker容器时自动启动服务?
  • 在Docker Alpine容器中启动一个Shell
  • 如何隐藏Dock图标
  • 如何将卷添加到现有的Docker容器?
  • Docker ADD vs VOLUME
  • 如何SSH入docker机VirtualBox实例?