当前位置: 首页 > 面试题库 >

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

强金鑫
2023-03-14
问题内容

我有一个从源代码下载并构建GTK的dockerfile,但是以下行未更新映像的环境变量:

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如下:

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


 类似资料:
  • 我有一个dockerfile,它从源代码处下载并构建GTK,但是下面一行并没有更新我的映像的环境变量: 我读到我应该使用ENV来设置环境值,但是下面的指令似乎也不起作用: 这是我的全部DockerFile:

  • 我需要在Dockerfile中传递环境变量,如下所示。我可以知道做这件事的有效方法吗。我尝试使用构建参数 但它没有用。 这是我的 Dockerfile 所以当我运行我的docker容器时,我相信我不想向它发送任何环境变量。 请指教。

  • 问题内容: 我正在为红宝石应用程序构建一个容器。我的应用程序的配置包含在环境变量中(通过dotenv加载到应用程序内部)。 这些配置变量之一是应用程序的公共ip,它在内部用于建立链接。我需要添加一个dnsmasq条目,将该ip指向容器内部的127.0.0.1,以便它可以获取应用程序的链接,就好像未对其进行容器化一样。 因此,我试图在我的Dockerfile中设置一个将环境变量传递给容器的。 我尝试

  • 问题内容: 当需要将多个目录串联在一起时(例如在可执行文件搜索路径中),存在一个与OS相关的分隔符。对于Windows ,对于Linux 。Python中有没有一种方法可以分割哪个字符? 在对这个问题的讨论中,如何使用python找出我的python路径?,建议这样做。这个答案是错误的,因为它是目录或文件名的分隔符,等于或。 问题答案:

  • 问题内容: 我正在尝试为Java中的流程构建器设置PATH环境变量,我尝试了以下操作: 但是以下操作无效,流程构建器选择了默认系统路径。 问题答案: 在新过程中使用路径。它不用于查找命令。 您可以尝试下一个解决方案。运行cmd.exe(bash等),然后运行命令。 例:

  • 3.1.1.设置PATH环境变量 Android SDK里有个目录,主要的工具都在里面。我们将会频繁地用到这些工具,因此把你的~/android-sdk/tools/目录加入系统的环境变量PATH会是个好办法,这一来就不需要每次使用它们时都切换目录了。 不同系统设置环境变量的方式各有不同,详见Installing Android SDK页面中的第二步。 (译注:Installing Android