도커 컨테이너에서 PATH 환경 변수를 영구적으로 업데이트하는 중
에 추가하려고 했습니다.PATH
서류철에~/.profile
그리고./etc/profile
하기와 같이
PATH = $PATH:/required/path
하지만, 그것은 작동하지 않습니다.그리고 나서 라인 쇼를 추가하려고 했는데, 그것도 작동하지 않았습니다.
export PATH
컨테이너와 호스트를 모두 다시 시작한 후에도 작동하지 않았습니다.
다음을 포함하려는 경우/new/path
Docker 파일에서 행 추가:
ENV PATH "$PATH:/new/path"
Docker에서 파일이 작동해야 합니다.
정답
가장 잘 투표된 답변은 추가할 것을 제안합니다.ENV PATH "$PATH:/new/path"
도커 파일에 연결하면 정말 작동할 것입니다.
그런데 왜 저한테는 안 되는 거죠?
일부 의견/답변에서 언급한 바와 같이, 솔루션 1.은 일부 사람들에게 효과가 없습니다.
그 이유는PATH
다음과 같은 스크립트로 덮어쓸 수 있습니다..bashrc
도커 컨테이너를 실행할 때, 따라서 다음과 같은 인상을 줍니다.ENV PATH...
효과가 없었지만, 이론적으로는 효과가 있었습니다.
이 문제를 해결하려면 다음에 추가해야 합니다..bashrc
올바른 사람PATH
다음 명령을 도커 파일에 추가합니다.
RUN echo "export PATH=/new/path:${PATH}" >> /root/.bashrc
도커 파일에 줄 넣기ENV PATH xxx
이 Docker 파일의 예를 참조하십시오. https://gist.github.com/deepak/5933685
나는 이 질문에 대한 답을 irc 채팅에서 얻었습니다.이것을 마주칠 수 있는 모든 사람들의 이익을 위해 여기에 주어집니다.많은 사람들이 업데이트를 하면서 오답을 했습니다.~/.profile
하지만 이것은 효과가 없었다.그래서 아래의 답을 사용하세요.
파일 업데이트~/.bashrc
사용자용 또는 파일 업데이트/etc/enviroment
모든 사용자에게 적용되는 전역 변경에 대해 전역.
인.bashrc
내보내기 경로:export PATH=$PATH:/new/path/bin
환경:PATH=$PATH:/new/path/bin
인터랙티브 셸과 비인터랙티브 셸의 차이는 언급되지 않았습니다.따라서 위의 솔루션이 때로는 효과가 있는 것처럼 보이고 때로는 그렇지 않은 이유입니다.
bashrc
일반적으로 파일을 건너뜁니다.예를 들어, 데비안에서,/etc/bash.bashrc
파일은 매우 명확하게 다음과 같이 말합니다.
# System-wide .bashrc file for interactive bash(1) shells.
# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
- A
RUN
Docker 파일의 명령은 대화형이 아닌 셸을 호출합니다.그리고 그 길은ENV
가져가게 될 것이고,bashrc
스크립트가 실행되지 않습니다. docker run -it <image> /bin/bash
대화형 셸을 호출합니다.bashrc
실행되며 에 설정된 모든 항목을 재정의할 수 있습니다.ENV
예를 들면PATH
일반적으로 정의되지 않음PATH=$PATH:/...
다음 중 하나의 구문bashrc
대본
두 가지 작동 모드 간에 안전하고 일관성을 유지하기 위해 Docker 파일에서 다음 작업을 수행할 수 있습니다.
ENV PATH /master/go/bin:${PATH}
RUN echo "${PATH}" >> /etc/bash.bashrc
참고:/etc/bash.bashrc
데비안 위치이며 다른 배포 이미지에서는 다를 수 있습니다.
이것은 제 도커 파일입니다. Centos에서 Java 홈 경로를 추출하고 설정했습니다. 그리고 그것은 저에게 효과가 있었습니다.
도커 파일:
FROM centos:7
RUN yum update -y yum install -y tar
COPY jdk-7u80-linux-x64.tar.gz /opt/
WORKDIR /opt
RUN tar -xvf jdk-7u80-linux-x64.tar.gz
RUN chmod -R 755 jdk1.7.0_80
RUN echo export JAVA_HOME=/opt/jdk1.7.0_80 >> /etc/profile
RUN echo export PATH='$PATH:$JAVA_HOME/bin' >> /etc/profile
ENV JAVA_HOME "/opt/jdk1.7.0_80"
ENV PATH "${JAVA_HOME}/bin:${PATH}"
언급URL : https://stackoverflow.com/questions/28722548/updating-path-environment-variable-permanently-in-docker-container
'programing' 카테고리의 다른 글
Font Awesome 아이콘이 작동하지 않습니다. 필요한 파일을 모두 포함했습니다. (0) | 2023.09.05 |
---|---|
MariaDB 테이블의 INSERT에 이미지 업로드가 실패하고 PDO::PARAM_LOB (0) | 2023.09.05 |
jQuery validator 플러그인 + ajax 제출이 작동하지 않음 (0) | 2023.09.05 |
ASP에서 리디렉션하는 방법.넷코어 레이저 페이지 (0) | 2023.09.05 |
.net의 메모리 데이터베이스에 있습니다. (0) | 2023.09.05 |