2016-09-21 81 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变量将在您输入泊坞窗时被正确更新图片。