도커 파일에서 PATH 환경 변수를 업데이트하는 방법?
원본에서 GTK를 다운로드하여 빌드하는 도커 파일이 있지만 다음 줄은 이미지의 환경 변수를 업데이트하지 않습니다.
RUN PATH="/opt/gtk/bin:$PATH"
RUN export PATH
환경 값을 설정하기 위해 ENV를 사용해야 한다는 내용을 읽었는데, 다음 명령도 작동하지 않는 것 같습니다.
ENV PATH /opt/gtk/bin:$PATH
이게 내 도커 파일 전부입니다.
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="${PATH}:/opt/gtk/bin"
건터가 올린 답변은 맞았지만 이미 올린 글과 다르지 않습니다.문제는.ENV
지시를 내렸지만, 그 후의 지시.RUN export $PATH
다음을 통해 환경 변수를 선언한 후에는 내보낼 필요가 없습니다.ENV
당신의 도커 파일에.
그 즉시.RUN export ...
선이 제거되고 이미지가 성공적으로 구축되었습니다.
[선정된 답변에 대해 이를 언급하였으나, 그 자체의 답변으로 더욱 부각시킬 것을 제안하였습니다.]
주의해야 할 점은
ENV PATH="/opt/gtk/bin:${PATH}"
와 같지 않을 수도 있습니다
ENV PATH="/opt/gtk/bin:$PATH"
곱슬곱슬한 괄호가 있는 전자는 호스트의 PATH를 제공할 수 있습니다.문서에는 이런 경우가 있을 거라고 나와 있지 않지만, 저는 그런 경우가 있다고 관찰했습니다.이것은 확인하기에 간단합니다.RUN echo $PATH
그리고 그것을 비교해 보세요.RUN echo ${PATH}
(깨끗한 도커 이미지를 생성/배포하려는 경우) 이는 다음과 같이 권장되지 않습니다.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
도커 파일 끝에 다음을 추가할 수 있습니다.
RUN echo "export PATH=$PATH" > /etc/environment
그래서 PATH는 모든 사용자에게 설정됩니다.
언급URL : https://stackoverflow.com/questions/27093612/in-a-dockerfile-how-to-update-path-environment-variable
'programing' 카테고리의 다른 글
CSS와 SCSS의 차이점은 무엇입니까? (0) | 2023.09.07 |
---|---|
ajax 호출 시 마우스 포인터 변경 (0) | 2023.09.07 |
Swift에서 두 버전 문자열 비교 (0) | 2023.09.07 |
Swift에서 파일 크기 가져오기 (0) | 2023.09.07 |
팬더의 데이터 정규화 (0) | 2023.09.07 |