Dockerfile 구축 Python3.5 환경---실행 가능한 코드를 직접 측정

3833 단어 Other
시합 때문에 docker 거울 파일을 올려야 하는데 어쩔 수 없이 또 한 권docker을 독학해서 하루를 연구한 결과 어떻게 된 일인지 대충 알 수 있었다. 사실은 명료하게 말하자면 Dockerfile을 써서 프로그램에 필요한 모든 의존 항목을 봉인하고 그 외에 너의 프로그램도 함께 봉인하는 것이다. 이것들로 image 거울 파일을 구성하는 것이다.그리고 이 거울 파일push을 클라우드에 넣으면 다른 사람이 사용할 수 있다. 이런 것이다. 어려운 점은 이것Dockerfile을 어떻게 쓰느냐에 있다. 이 폐기 시간은 지정된 사용CentOS으로 환경을 구축하기 때문에 사실 경기를 위해서가 아니라면Ubuntu 조작 환경에서 진행할 수 있다.파이썬 3 위로 올라가기5 환경 코드:
FROM nvidia/cuda:8.0-cudnn6-devel-centos7
# You can use alternative base mirror from https://hub.docker.com/r/nvidia/cuda
MAINTAINER Will_Ye "[email protected]"

#                , Python,numpy,tensorflow  
RUN set -ex \
    && yum install -y wget tar libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make initscripts \
    && wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz \
    && tar -zxvf Python-3.5.0.tgz \
    && cd Python-3.5.0 \
    && ./configure prefix=/usr/local/python3 \
    && make \
    && make install \
    && make clean \
    && cd .. \
    && rm -rf /Python-3.5.0* \
    && yum install -y epel-release \
    && yum install -y python-pip
RUN set -ex \
    #      python
    && mv /usr/bin/python /usr/bin/python27 \
    && mv /usr/bin/pip /usr/bin/pip-python2.7 \
    #      python3
    && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip \
    && pip install scipy \  #     scipy   ,    python2.7  ,python3.5     
    && ln -s /usr/local/python3/bin/python3.5 /usr/bin/python \
#      python    yum    
RUN set -ex \
    && sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/bin/yum \
    && sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/libexec/urlgrabber-ext-down \
    && yum install -y deltarpm
RUN yum -y install python-devel scipy
RUN pip install --upgrade pip
RUN pip install matplotlib
RUN pip install --upgrade setuptools
RUN pip install tensorflow-gpu
RUN pip install Pillow
#RUN pip install moviepy
RUN pip install keras
RUN pip install cmake
#  opencv        ,     ,                   cv2,    ,       ,     ,    unzip ,                 ,   
#RUN set -ex \
#    &&wget https://github.com/opencv/opencv/archive/2.4.13.zip \
#    &&unzip opencv-2.4.13.zip \
#    &&cd opencv-2.4.13 \
#    &&cmake CMakeLists.txt \
#    &&mkdir build \
#    &&cd build \
#    &&cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_FFMPEG=OFF -D CMAKE_INSTALL_PREFIX=/usr/local .. \
#     && make \
#     && make install \
RUN pip install wave
RUN pip install  scikit-image

# Add your project file
#            ,        ,            ,    
ADD ./competition/application.py /data/application.py
ADD ./competition/model_weights20190430.h5 /data/model_weights20190430.h5

# Define the entry process command
#  CMD       ,     
CMD python /data/application.py

그중에 안에 있는 문법의 용도를 말하면서 보면서 수집한 것을 정리하자.
  • Dockerfile의 역할: RUN set -ex \set의 명령이다. shell의 실행 과정에서 어떤 오류가 발생하면 계속 아래로 실행하기 때문이다. shell의 역할은 다음 명령이 잘못되면 실행을 취소하고 계속 아래로 실행하지 않기 때문이다.python 환경을 구축하는 것이 매우 중요하기 때문에 출력될 수 있는 정보를 보고하는 문제가 있어서 주의하지 않았다.뒤에는 온갖 이상한 오타가 있었다.
  • set -exmkdir -p /urs/local/python3.5: 평소에 여러분도 사용하실 수 있는데 구축-p에 아주 편리하고 코드를 적게 씁니다. 이것Dockerfile을 추가하지 않으면 상급 폴더가 없는 전제에서 목표 파일/폴더를 만들 수 없기 때문에 이것만 있으면 상급 폴더도 함께 만들 수 있습니다.
  • -pADD의 차이점: 차이는 간단하다. COPY 강력하게 링크를 통해 파일을 다운로드할 수 있다. ADD는 안 되고 로컬 파일만 지정한 경로로 복사할 수 있다.
  • 좋은 웹페이지 즐겨찾기