zoukankan      html  css  js  c++  java
  • docker--Dockerfile-nginx

    # 基础镜像
    FROM alpine
     
    # 作者信息
    MAINTAINER NGINX Docker Maintainers "1024331014@qq.com"
     
    # 修改源
    RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && 
        echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories
     
    # 安装需要的软件
    RUN apk update && 
        apk add --no-cache ca-certificates && 
        apk add --no-cache curl bash tree tzdata && 
        cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
     
    # 设置变量 
    ENV NGINX_VERSION 1.14.0
     
    # 编译安装nginx
    RUN GPG_KEYS=B0F4253373F8F6F510D42178520A9993A1C052F8 
        && CONFIG="
            --prefix=/etc/nginx 
            --sbin-path=/usr/sbin/nginx 
            --modules-path=/usr/lib/nginx/modules 
            --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 
            --user=nginx 
            --group=nginx 
            --with-http_ssl_module 
            --with-http_realip_module 
            --with-http_addition_module 
            --with-http_sub_module 
            --with-http_dav_module 
            --with-http_flv_module 
            --with-http_mp4_module 
            --with-http_gunzip_module 
            --with-http_gzip_static_module 
            --with-http_random_index_module 
            --with-http_secure_link_module 
            --with-http_stub_status_module 
            --with-http_auth_request_module 
            --with-http_xslt_module=dynamic 
            --with-http_image_filter_module=dynamic 
            --with-http_geoip_module=dynamic 
            --with-threads 
            --with-stream 
            --with-stream_ssl_module 
            --with-stream_ssl_preread_module 
            --with-stream_realip_module 
            --with-stream_geoip_module=dynamic 
            --with-http_slice_module 
            --with-mail 
            --with-mail_ssl_module 
            --with-compat 
            --with-file-aio 
            --with-http_v2_module 
        " 
        && addgroup -S nginx 
        && adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx 
        && apk add --no-cache --virtual .build-deps 
            gcc 
            libc-dev 
            make 
            openssl-dev 
            pcre-dev 
            zlib-dev 
            linux-headers 
            curl 
            gnupg 
            libxslt-dev 
            gd-dev 
            geoip-dev 
        && curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o nginx.tar.gz 
        && curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz.asc  -o nginx.tar.gz.asc 
        && export GNUPGHOME="$(mktemp -d)" 
        && found=''; 
        for server in 
            ha.pool.sks-keyservers.net 
            hkp://keyserver.ubuntu.com:80 
            hkp://p80.pool.sks-keyservers.net:80 
            pgp.mit.edu 
        ; do 
            echo "Fetching GPG key $GPG_KEYS from $server"; 
            gpg --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$GPG_KEYS" && found=yes && break; 
        done; 
        test -z "$found" && echo >&2 "error: failed to fetch GPG key $GPG_KEYS" && exit 1; 
        gpg --batch --verify nginx.tar.gz.asc nginx.tar.gz 
        && rm -r "$GNUPGHOME" nginx.tar.gz.asc 
        && mkdir -p /usr/src 
        && tar -zxC /usr/src -f nginx.tar.gz 
        && rm nginx.tar.gz 
        && cd /usr/src/nginx-$NGINX_VERSION 
        && ./configure $CONFIG --with-debug 
        && make -j$(getconf _NPROCESSORS_ONLN) 
        && mv objs/nginx objs/nginx-debug 
        && mv objs/ngx_http_xslt_filter_module.so objs/ngx_http_xslt_filter_module-debug.so 
        && mv objs/ngx_http_image_filter_module.so objs/ngx_http_image_filter_module-debug.so 
        && mv objs/ngx_http_geoip_module.so objs/ngx_http_geoip_module-debug.so 
        && mv objs/ngx_stream_geoip_module.so objs/ngx_stream_geoip_module-debug.so 
        && ./configure $CONFIG 
        && make -j$(getconf _NPROCESSORS_ONLN) 
        && make install 
        && rm -rf /etc/nginx/html/ 
        && mkdir /etc/nginx/conf.d/ 
        && mkdir -p /usr/share/nginx/html/ 
        && install -m644 html/index.html /usr/share/nginx/html/ 
        && install -m644 html/50x.html /usr/share/nginx/html/ 
        && install -m755 objs/nginx-debug /usr/sbin/nginx-debug 
        && install -m755 objs/ngx_http_xslt_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_xslt_filter_module-debug.so 
        && install -m755 objs/ngx_http_image_filter_module-debug.so /usr/lib/nginx/modules/ngx_http_image_filter_module-debug.so 
        && install -m755 objs/ngx_http_geoip_module-debug.so /usr/lib/nginx/modules/ngx_http_geoip_module-debug.so 
        && install -m755 objs/ngx_stream_geoip_module-debug.so /usr/lib/nginx/modules/ngx_stream_geoip_module-debug.so 
        && ln -s ../../usr/lib/nginx/modules /etc/nginx/modules 
        && strip /usr/sbin/nginx* 
        && strip /usr/lib/nginx/modules/*.so 
        && rm -rf /usr/src/nginx-$NGINX_VERSION 
        
        # Bring in gettext so we can get `envsubst`, then throw
        # the rest away. To do this, we need to install `gettext`
        # then move `envsubst` out of the way so `gettext` can
        # be deleted completely, then move `envsubst` back.
        && apk add --no-cache --virtual .gettext gettext 
        && mv /usr/bin/envsubst /tmp/ 
        
        && runDeps="$( 
            scanelf --needed --nobanner /usr/sbin/nginx /usr/lib/nginx/modules/*.so /tmp/envsubst 
                | awk '{ gsub(/,/, "
    so:", $2); print "so:" $2 }' 
                | sort -u 
                | xargs -r apk info --installed 
                | sort -u 
        )" 
        && apk add --no-cache --virtual .nginx-rundeps $runDeps 
        && apk del .build-deps 
        && apk del .gettext 
        && mv /tmp/envsubst /usr/local/bin/ 
        
        # forward request and error logs to docker log collector
        && ln -sf /dev/stdout /var/log/nginx/access.log 
        && ln -sf /dev/stderr /var/log/nginx/error.log
     
    # 将目录下的文件copy到镜像中
    COPY nginx.conf /etc/nginx/nginx.conf
    COPY nginx.vh.default.conf /etc/nginx/conf.d/default.conf
     
    # 开放80端口
    EXPOSE 80
     
    STOPSIGNAL SIGTERM
     
    # 启动nginx命令
    CMD ["nginx", "-g", "daemon off;"]
    

    建立镜像:

    docker build -t alpine:nginx .

    挂载配置和日志文件:  

    docker run -tid --name zjznginx -p 80:80 -v /opt/tmp/conf/:/etc/nginx/ -v /opt/tmp/:/var/log/nginx -m 2048m --memory-swap=2048m --cpu-shares=256 alpine:nginx

  • 相关阅读:
    第二次会议记录(2021.7.19)
    第一次会议记录(2021.7.8)
    软件工程助教工作总结
    Linux下的常用命令
    GPIO输出——使用固件库点亮LED 宏定义遇到的问题
    STM32 GPIO BRR和BSRR寄存器
    snprintf()函数使用方法
    结构体元素偏移量宏的定义及解析
    函数指针&回调函数Callback
    解析#define NULL ((void *)0)——野指针,空指针和 void*
  • 原文地址:https://www.cnblogs.com/kuku0223/p/10103799.html
Copyright © 2011-2022 走看看