나는 바닐라 파이썬 환경을 설치하기 위해 함께 모은 Dockerfile을 가지고 있습니다 (나중에 앱을 설치할 것입니다).
FROM ubuntu:12.04
# required to build certain python libraries
RUN apt-get install python-dev -y
# install pip - canonical installation instructions from pip-installer.org
# http://www.pip-installer.org/en/latest/installing.html
ADD https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py /tmp/ez_setup.py
ADD https://raw.github.com/pypa/pip/master/contrib/get-pip.py /tmp/get-pip.py
RUN python /tmp/ez_setup.py
RUN python /tmp/get-pip.py
RUN pip install --upgrade pip
# install and configure virtualenv
RUN pip install virtualenv
RUN pip install virtualenvwrapper
ENV WORKON_HOME ~/.virtualenvs
RUN mkdir -p $WORKON_HOME
RUN source /usr/local/bin/virtualenvwrapper.sh
빌드는 마지막 줄까지 정상적으로 실행되며 다음 예외가 발생합니다.
[previous steps 1-9 removed for clarity]
...
Successfully installed virtualenvwrapper virtualenv-clone stevedore
Cleaning up...
---> 1fc253a8f860
Step 10 : ENV WORKON_HOME ~/.virtualenvs
---> Running in 8b0145d2c80d
---> 0f91a5d96013
Step 11 : RUN mkdir -p $WORKON_HOME
---> Running in 9d2552712ddf
---> 3a87364c7b45
Step 12 : RUN source /usr/local/bin/virtualenvwrapper.sh
---> Running in c13a187261ec
/bin/sh: 1: source: not found
만약 내가 ls
그 디렉토리에 (바로 이전 단계가 최선을 다하고 있다고 테스트) 나는 파일이 예상대로 존재하는 것을 볼 수있다 :
$ docker run 3a87 ls /usr/local/bin
easy_install
easy_install-2.7
pip
pip-2.7
virtualenv
virtualenv-2.7
virtualenv-clone
virtualenvwrapper.sh
virtualenvwrapper_lazy.sh
source
명령을 실행하려고하면 위와 같은 '찾을 수 없음'오류가 발생합니다. 그러나 대화 형 셸 세션을 실행하면 소스가 작동합니다.
$ docker run 3a87 bash
source
bash: line 1: source: filename argument required
source: usage: source filename [arguments]
그때 행복하게 접근을 여기에서 스크립트를 실행 할 수 있습니다 workon
, mkvirtualenv
등
내가 뒷조사를 해봤 그리고 처음에 문제가 사이의 차이에 거짓말을 할 수 것처럼 보였다 bash는 우분투로 로그인 쉘 및 대시 우분투 같은 시스템 쉘 , 대시 지원하지 source
명령을 사용합니다.
그러나 이에 대한 대답은 '.' 을 사용하는 것으로 보입니다 . 대신에 source
Docker 런타임이 go panic 예외와 함께 폭발합니다.
이 문제를 해결하기 위해 Dockerfile RUN 명령에서 쉘 스크립트를 실행하는 가장 좋은 방법은 무엇입니까?
CMD source activate django-py35