Vanilya python ortamı kurmak için bir araya getirdiğim bir Dockerfile'ım var (içine bir uygulama yükleyeceğim, ancak daha sonraki bir tarihte).
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
Yapı, aşağıdaki istisnayı aldığım son satıra kadar tamam çalışır:
[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
Eğer ben ls
bu dizine (sadece önceki adımların yapıldığını test etmek için) dosyaları beklendiği gibi var olduğunu görebilirsiniz:
$ 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
Sadece source
komutu çalıştırmayı denersem yukarıdaki ile aynı 'bulunamadı' hatasını alıyorum. Ancak etkileşimli bir kabuk oturumu ÇALIŞIYORSA, kaynak çalışıyor:
$ docker run 3a87 bash
source
bash: line 1: source: filename argument required
source: usage: source filename [arguments]
Sonra mutlu erişimini buradan komut dosyasını çalıştırın ve olabilir workon
, mkvirtualenv
vs.
Biraz araştırma yaptık ve başlangıçta sorun arasındaki fark yalan gibi bir halleri vardı bash Ubuntu giriş kabuğu ve çizgi Ubuntu sistem kabuğu , çizgi desteklemeyen source
komutu.
Ancak, bunun cevabı '.' Bunun yerine source
, Docker çalışma zamanının bir panik istisnasıyla patlamasına neden olur.
Bu sorunu çözmek için bir Dockerfile RUN komutundan bir kabuk komut dosyası çalıştırmanın en iyi yolu nedir (Ubuntu 12.04 LTS için varsayılan temel görüntüden kaçıyorum).
CMD source activate django-py35