docker 노트 의 nginx 구축 Dockerfile

11484 단어
 
  

docker笔记之构建nginx的Dockerfile

从源码构建nginx应用,可以参考 官方Dockerfile。 PS:这份Dockerfile使用了alpine作为基础镜像,非常有特点,但对于Jackie这样的小白来说区别不大。

基于ubuntu的Dockerfile

FROM ubuntu:14.04

MAINTAINER Jackie "www.jackieathome.net"
ENV NGINX_VERSION 1.10.3
ENV OPENSSL_VERSION 1.0.2k
ENV PCRE_VERSION 8.40
ENV ZLIB_VERSION 1.2.11
ENV BUILD_ROOT /usr/local/src/nginx

#           ,   163    
RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak \
        && sed -i "s/archive\.ubuntu\.com/mirrors\.163\.com/g" /etc/apt/sources.list \
        && apt-get update \
        && apt-get -y install zip unzip curl make gcc g++ \
        && mkdir -p $BUILD_ROOT \
        && cd $BUILD_ROOT \
        && curl https://ftp.pcre.org/pub/pcre/pcre-$PCRE_VERSION.zip -o $BUILD_ROOT/pcre-$PCRE_VERSION.zip \
        && curl https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz -o $BUILD_ROOT/openssl-$OPENSSL_VERSION.tar.gz \
        && curl http://www.zlib.net/zlib-$ZLIB_VERSION.tar.gz -o $BUILD_ROOT/zlib-$ZLIB_VERSION.tar.gz \
        && curl https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o $BUILD_ROOT/nginx-$NGINX_VERSION.tar.gz \
        && tar vxzf nginx-$NGINX_VERSION.tar.gz \
        && unzip pcre-$PCRE_VERSION.zip \
        && tar vxfz zlib-$ZLIB_VERSION.tar.gz \
        && tar vxfz openssl-$OPENSSL_VERSION.tar.gz \
        && cd nginx-$NGINX_VERSION \
        && BUILD_CONFIG="\
            --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --http-log-path=/var/log/nginx/access.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --http-client-body-temp-path=/var/cache/nginx/client_temp \
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
            --with-openssl=$BUILD_ROOT/openssl-$OPENSSL_VERSION \
            --with-pcre=$BUILD_ROOT/pcre-$PCRE_VERSION \
            --with-zlib=$BUILD_ROOT/zlib-$ZLIB_VERSION \
            --with-http_ssl_module \
            --with-http_v2_module \ 
            --with-threads \
            " \
        && mkdir -p /var/cache/nginx \
        && ./configure $BUILD_CONFIG \
        && make && make install \
        && rm -rf $BUILD_ROOT \
        && apt-get -y remove zip unzip curl make gcc g++ \
        && apt-get -y autoremove \
        && rm -rf /var/lib/apt/lists/* \
        && cp /etc/apt/sources.list.bak /etc/apt/sources.list \
        && ln -sf /dev/stdout /var/log/nginx/access.log \
        && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]

centos 기반 Dockerfile
FROM centos

MAINTAINER Jackie "www.jackieathome.net"
ENV NGINX_VERSION 1.10.3
ENV OPENSSL_VERSION 1.0.2k
ENV PCRE_VERSION 8.40
ENV ZLIB_VERSION 1.2.11
ENV BUILD_ROOT /usr/local/src/nginx

#                 ,      yum update  ,        
#         ,     163    
#RUN yum -y update \
RUN     yum -y install curl \
        && mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \
        && curl http://mirrors.163.com/.help/CentOS7-Base-163.repo -o /etc/yum.repos.d/CentOS7-Base-163.repo \ 
        && yum clean all \
        && yum makecache \
        && yum -y install gcc gcc-c++ make perl zip unzip \
        && mkdir -p $BUILD_ROOT \
        && cd $BUILD_ROOT \
        && curl https://ftp.pcre.org/pub/pcre/pcre-$PCRE_VERSION.zip -o $BUILD_ROOT/pcre-$PCRE_VERSION.zip \
        && curl https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz -o $BUILD_ROOT/openssl-$OPENSSL_VERSION.tar.gz \
        && curl http://www.zlib.net/zlib-$ZLIB_VERSION.tar.gz -o $BUILD_ROOT/zlib-$ZLIB_VERSION.tar.gz \
        && curl https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o $BUILD_ROOT/nginx-$NGINX_VERSION.tar.gz \
        && tar vxzf nginx-$NGINX_VERSION.tar.gz \
        && unzip pcre-$PCRE_VERSION.zip \
        && tar vxfz zlib-$ZLIB_VERSION.tar.gz \
        && tar vxfz openssl-$OPENSSL_VERSION.tar.gz \
        && cd nginx-$NGINX_VERSION \
        && BUILD_CONFIG="\
            --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --http-log-path=/var/log/nginx/access.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --http-client-body-temp-path=/var/cache/nginx/client_temp \
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
            --with-openssl=$BUILD_ROOT/openssl-$OPENSSL_VERSION \
            --with-pcre=$BUILD_ROOT/pcre-$PCRE_VERSION \
            --with-zlib=$BUILD_ROOT/zlib-$ZLIB_VERSION \
            --with-http_ssl_module \
            --with-http_v2_module \ 
            --with-threads \
            " \
        && mkdir -p /var/cache/nginx \
        && ./configure $BUILD_CONFIG \
        && make && make install \
        && rm -rf $BUILD_ROOT \
        && yum -y remove gcc gcc-c++ make perl zip unzip \
        && yum clean all

EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]

필기 하 다..dockerignore 역할 과git.gitignore 파일 이 유사 하 다.... 에 있다Dockerfile 같은 등급 의 디 렉 터 리 에 추가.dockerignore, 전달 할 필요 가 없습니다.docker 의 파일 이름 을 설정 하면 전달 을 효과적으로 줄 일 수 있 습 니 다.docker 명령 의 데이터 로 구축 효율 을 높 인 다.글 Do not ignore. dockerignore.dockerignore 의 역할 과 사용 방법 은 비교적 전면적으로 소개 되 었 다.apt-get apt-get 실행 시 경로 에 있 습 니 다./var/lib/apt/lists/ 캐 시 데이터 이기 때문에 구축 동작 이 완료 되면 이 경 로 를 손 으로 청소 해 야 합 니 다.집행 하 다.apt-get remove 소프트웨어 를 정리 한 후에 쓸모없는 소프트웨어 가 존재 할 수 있 으 므 로 실행 하 는 것 을 잊 지 마 세 요.apt-get autoremoveyum yum -y 실행 할 때 사용자 가 확인 할 필요 가 없고 모든 행 위 는 기본 사용자 가 동의 하 며 비 상호작용 모드, 예 를 들 어Dockerfile 이런 장면 에서 사용 합 니 다.yum 명령 이 실 행 될 때 경로 에 있 습 니 다./var/cache/yum 캐 시 데이터 생 성, 실행yum clean all 이 캐 시 를 정리 하고 공간 을 방출 하 며 최종 미 러 가 사용 하 는 공간 을 줄 일 수 있 습 니 다.yum update 시스템 이 업데이트 되 고 기본 미 러 버 전이 낡 으 면 대량의 소프트웨어 를 다운로드 하고 설치 하여 최종 미 러 가 차지 하 는 공간 이 비교적 크다.
상용 명령
#         
sudo docker ps -q -a | xargs sudo docker rm
#        
sudo docker rmi $(sudo docker images | grep "^" | awk '{print $3}')

참고 자료
  • docker-nginx/stable/jessie/Dockerfile
  • docker-nginx/stable/alpine/Dockerfile
  • nginx Dockerfile doc
  • How To Run Nginx in a Docker Container on Ubuntu 14.04
  • Docker Explained: How To Containerize and Use Nginx as a Proxy
  • Do not ignore .dockerignore
  • docker 상용 관리 명령 (하)
  • How to remove unused Docker containers and images
  • Docker 사용 경험 총화
  • Docker 미 러 돌리 기
  • Docker 2 -- Dockerfile
  • 에 대하 여
  • Docker 4 -- 총괄
  • Docker Explained: Using Dockerfiles to Automate Building of Images
  • Dockerfile 명령 상세 설명
  • 손 으로 Dockerfile 을 쓰 는 것 을 가르쳐 주 고 MongoDB 와 Nginx Dockerfile 의 인 스 턴 스 를 첨부 합 니 다
  • Docker run 명령 의 사용 방법
  • Docker - 입문 부터 실천 까지
  • centos 는 yum 을 이용 하여 마 운 트 해제 소프트웨어 를 설치 하 는 데 자주 사용 되 는 명령
  • Docker 시리즈 의 (3): Docker 마이크로 용기 Alpine Linux
  • DockerFile 이 nginx 용 기 를 만 드 는 전 과정
  • Docker 용기 의 Nginx 실천
  • dockerfile 인 스 턴 스 -- nginx 설치
  • 원본 보기:http://www.jackieathome.net/archives/483.html

    좋은 웹페이지 즐겨찾기