2016-09-21 82 views
1

時,我已經寫了Dockerfile爲建設一個碼頭工人形象:空路徑返回進入新的碼頭工人形象

#author russell jarvis [email protected] 

#start from the serial version of ubuntu NEURON+Python as if its a module 
# add mpi support 


#NEURON Dockerfile 
#Docker comments must be of this form. 
# This is the syntax for a directive. Don’t get confused 
#Set the base image to pyneuron-toolbox 


FROM russelljarvis/pyneuron-toolbox 
RUN echo $PATH 


WORKDIR $HOME 
RUN sudo /opt/conda/bin/conda install -y mpi4py ipython 
RUN echo $PATH 


WORKDIR /home/docker 

RUN \ 
    sudo wget https://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.0.tar.gz && \ 
    sudo tar -xzf openmpi-2.0.0.tar.gz && \ 
    sudo rm openmpi-2.0.0.tar.gz 
RUN echo $PATH 

WORKDIR /home/docker/openmpi-2.0.0 


RUN \ 
    sudo ./configure && \ 
    sudo make all && \ 
    sudo make install 

RUN echo $PATH 

#Download maven, and its java dependencies 

WORKDIR $HOME/git 
RUN sudo apt-get -y install default-jre default-jdk maven 

RUN echo $PATH 


WORKDIR /home/docker/neuron/nrn-7.4 



RUN sudo ./configure --prefix=`pwd` --without-iv --with-nrnpython=/opt/conda/bin/python --with-paranrn=/usr/bin/mpiexec 
RUN sudo make all && \ 
    sudo make install 

RUN echo $PATH 

WORKDIR src/nrnpython 
RUN sudo /opt/conda/bin/python3.4 setup.py install 

RUN echo $PATH 
RUN echo "its chowning the USER directory that seems to break path" 
#RUN sudo chown -R docker $HOME 
RUN echo $PATH 
WORKDIR /home/docker/git 
#RUN git clone https://github.com/NeuroML/jNeuroML 
RUN git clone https://github.com/russelljjarvis/jNeuroML.git 
WORKDIR jNeuroML 
RUN sudo /opt/conda/bin/python getNeuroML.py 
ENV ADDITIONAL_PATH="/neuron/nrn-7.4/x86_64/bin" 
CMD export PATH=$PATH:$ADDITIONAL_PATH; /bin/echo -e "ADDITIONAL_PATH is $ADDITIONAL_PATH\nPATH is $PATH" 
RUN echo $PATH 
RUN echo $ADDITIONAL_PATH 

#WORKDIR /home/docker/git 
#RUN git clone 

我建立由Dockerfile指定的圖像與

$docker build . 

我找到圖片ID爲最新版本,並輸入它使用:

$docker run -it d10bd1b2c2bb /bin/bash 

但是,當我進入碼頭圖像我發現環境變量PATH的內容是空的。

最終命令是:

ENV ADDITIONAL_PATH="/neuron/nrn-7.4/x86_64/bin" 
CMD export PATH=$PATH:$ADDITIONAL_PATH; /bin/echo -e "ADDITIONAL_PATH is $ADDITIONAL_PATH\nPATH is $PATH" 
RUN echo $PATH 
RUN echo $ADDITIONAL_PATH 

RUN所述echo語句的輸出是適當的。在構建圖像的過程中,碼頭環境變量似乎很好,但是,只有在輸入泊塢窗圖像時纔會出現問題。

如果這些最終的Docker命令被省略,那麼當我進入新鮮鑄造的圖像時,PATH變量仍然是一個空字符串。

我不知道是否有人知道發生了什麼問題?

感謝您的任何建議。

回答

1

只有與以下內容類似的語句: ENV PATH/opt/conda/bin/conda:/ opt/conda/bin/python:$ PATH 應該用於設置環境變量。 路徑變量可以在生成過程中檢查: RUN echo $ PATH 但是在構建過程中命令如 conda和python可能無法按預期工作,但PATH變量將在您輸入泊塢窗時被正確更新圖片。