• 用Dockerfile生成docker image


    在docker的官方php镜像中,有独立的php和apache版本的,这里尝试用php-fpm7.2.1(alpine3.7)作为基础镜像,在把nginx1.13.8加进去.

    第一步:拉取php镜像:

    docker pull php:7.2.1-fpm-alpine3.7
    

    第二步:创建镜像制作工作目录(根据自己喜好来创建):

        mkdir ~/dockerfiles
        cd ~/dockerfiles
        mkdir nginx-phpfpm
        cd nginx-phpfpm
       
    

    第三步:创建编辑Dockerfile

         vi Dockerfile
    
    FROM php:7.2.1-fpm-alpine3.7
    
    LABEL maintainer="NGINX-PHPFPM Docker Maintainers <ikodota@gmail.com>"
    
    ENV NGINX_VERSION 1.13.8
    
    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-http_perl_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 
    		perl-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_http_perl_module.so objs/ngx_http_perl_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_http_perl_module-debug.so /usr/lib/nginx/modules/ngx_http_perl_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/ 
    	
    	# Bring in tzdata so users could set the timezones through the environment
    	# variables
    	&& apk add --no-cache tzdata 
    	
    	# 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 nginx.conf /etc/nginx/nginx.conf
    #COPY nginx.vh.default.conf /etc/nginx/conf.d/default.conf
    
    EXPOSE 443 80
    
    STOPSIGNAL SIGTERM
    
    CMD ["nginx", "-g", "daemon off;"]
    
    

    第四步,开始编译

    修改nginx.conf 使之支持php.然后:

    docker build -t ikodota/nginx-phpfpm-alpine:7.2.1 .
    
  • 相关阅读:
    day1记一次无列名注入
    无参数RCE
    ThinkPHP 5.x远程命令执行漏洞
    phpmyadmin4.8.1文件包含漏洞
    foreach循环导致变量覆盖
    绕过空格的报错注入
    布尔盲注payload补充
    php后台验证两种方式绕过
    CentOS yum 配置阿里镜像
    CentOS通过yum安装配置Java环境
  • 原文地址:https://www.cnblogs.com/ikodota/p/make_docker_image_nginx_phpfpm_use_dockerfile.html
Copyright © 2020-2023  润新知