您的足迹:首页 > 系统运维 >Docker安装tengine,php和一些扩展

Docker安装tengine,php和一些扩展

FROM alpine:3.4

LABEL maintainer="mypika@163.com"

# 修改镜像源

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

RUN mkdir -p /data/www/ && 

        mkdir -p /data/log && 

        mkdir -p /data/conf

RUN apk update && apk add --no-cache --virtual .build-deps 

        autoconf 

        gcc 

        g++ 

        make 

        cmake 

        openssl  

        libc-dev 

        openssl-dev 

        pcre-dev 

        zlib-dev 

        freetype-dev 

        geoip-dev 

        curl 

        gnupg 

        libxslt-dev 

        gd-dev 

        curl-dev 

        imagemagick-dev 

        libtool 

        libxml2-dev 

        postgresql-dev 

        sqlite-dev 

        libmcrypt-dev 

## alpine 3.10可以直接安装rabbitmq-c-dev

##rabbitmq-c-dev 

        freetype-dev 

        libjpeg-turbo-dev 

        libpng-dev && 

        rm -rf .build-deps

# 安装tengine

RUN wget http://tengine.taobao.org/download/tengine-2.2.3.tar.gz

RUN tar zxvf tengine-2.2.3.tar.gz

WORKDIR /tengine-2.2.3

RUN cd /tengine-2.2.3

RUN ./configure --user=nginx 

        --group=nginx 

        --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 

        --http-log-path=/data/log/access.log 

        --error-log-path=/data/log/error.log 

        --conf-path=/data/conf/nginx/nginx.conf 

        --prefix=/usr/local/nginx 

        --with-http_ssl_module 

        --with-http_realip_module 

        --without-http_memcached_module 

        --with-http_stub_status_module 

        --without-http-cache 

        --with-http_gzip_static_module 

        --with-http_v2_module 

        --with-http_gunzip_module 

        --with-http_concat_module 

        --with-http_geoip_module

RUN sed -i 's/-Werror -g//g' objs/Makefile

RUN make && make install

RUN addgroup -S nginx && 

    adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx

WORKDIR /

RUN rm -rf tengine-*

# 安装php

RUN mkdir -p /data/conf/php

RUN wget https://www.php.net/distributions/php-5.6.40.tar.bz2

RUN tar jxvf php-5.6.40.tar.bz2

WORKDIR /php-5.6.40

RUN ./configure --prefix=/usr/local/php 

        --with-config-file-path=/data/conf 

        --enable-fpm 

        --with-fpm-user=www-data 

        --with-fpm-group=www-data 

        --with-mysql 

        --with-mysqli 

        --with-pdo-mysql 

        --enable-opcache 

        --enable-static 

        --enable-inline-optimization 

        --enable-sockets 

        --enable-wddx 

        --enable-zip 

        --enable-calendar 

        --enable-bcmath 

        --enable-soap 

        --with-zlib 

        --with-iconv 

        --with-gd 

        --with-xmlrpc 

        --enable-mbstring 

        --with-curl 

        --enable-ftp 

        --with-mcrypt  

        --with-mhash 

        --with-openssl 

        --with-freetype-dir 

        --with-jpeg-dir 

        --enable-gd-native-ttf

RUN make && make install

RUN cp php.ini-production /data/conf/php/php.ini

RUN addgroup -S www-data && 

    adduser -D -S -h /var/cache/www-data -s /sbin/nologin -G www-data www-data

WORKDIR /

RUN rm -rf php-*

# INSTALL php extension amqp

RUN wget https://github.com/alanxz/rabbitmq-c/archive/v0.9.0.tar.gz

RUN tar zxvf v0.9.0.tar.gz

WORKDIR /rabbitmq-c-0.9.0

RUN mkdir build && cd build && 

        cmake .. && 

        cmake --build . --target install

WORKDIR /

RUN rm -rf v0.9.0.tar.gz && rm -rf rabbitmq-c-0.9.0

RUN wget https://pecl.php.net/get/amqp-1.9.4.tgz

RUN tar zxvf amqp-1.9.4.tgz && cd amqp-1.9.4 && 

        /usr/local/php/bin/phpize && 

        ./configure --with-php-config=/usr/local/php/bin/php-config --with-librabbitmq-dir=/usr/local && 

        make && make install && 

        ln -s /usr/local/lib64/librabbitmq.so.4 /usr/lib/ && 

        echo "extension=amqp.so" >> /data/conf/php/php.ini

WORKDIR /

RUN rm -rf amqp*

# INSTALL php extension redis

RUN wget https://pecl.php.net/get/redis-4.3.0.tgz

RUN tar zxvf redis-4.3.0.tgz && cd redis-4.3.0 && 

        /usr/local/php/bin/phpize && 

        ./configure --with-php-config=/usr/local/php/bin/php-config && 

        make && make install && 

        echo "extension=redis.so" >> /data/conf/php/php.ini

WORKDIR /

RUN rm -rf redis*

# INSTALL php extension imagick

RUN wget https://pecl.php.net/get/imagick-3.4.4.tgz

RUN tar zxvf imagick-3.4.4.tgz && cd imagick-3.4.4 && 

        /usr/local/php/bin/phpize && 

        ./configure --with-php-config=/usr/local/php/bin/php-config && 

        make && make install && 

        echo "extension=imagick.so" >> /data/conf/php/php.ini

WORKDIR /

RUN rm -rf imagick*

#配置php.ini

RUN sed -i 's/max_execution_time = 30/max_execution_time = 0/' /data/conf/php/php.ini

#配置post大小

RUN sed -i 's/post_max_size = 8M/post_max_size = 20M/' /data/conf/php/php.ini

#配置上传文件大小

RUN sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 20M/' /data/conf/php/php.ini

RUN sed -i 's:;session.save_path = "/tmp":session.save_path = "/tmp":' /data/conf/php/php.ini

RUN sed -i 's/;date.timezone =/date.timezone = PRC/' /data/conf/php/php.ini

#设定错误输出级别

RUN sed -i 's:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT:error_reporting = E_ALL:' /data/conf/php/php.ini

#启用php性能优化

#启用Zend Optimizer优化开关

RUN sed -i 's:;opcache.enable=0:opcache.enable=1:' /data/conf/php/php.ini

#共享内存的大小, 总共能够存储多少预编译的 PHP 代码(单位:MB),推荐128M

RUN sed -i 's:;opcache.memory_consumption=64:opcache.memory_consumption=256:' /data/conf/php/php.ini

#暂存池中字符串的占内存总量.(单位:MB), 推荐 8

RUN sed -i 's:;opcache.interned_strings_buffer=4:opcache.interned_strings_buffer=8:' /data/conf/php/php.ini

#最大缓存的文件数目 200  到 100000 之间,推荐 4000

RUN sed -i 's:;opcache.max_accelerated_files=2000:opcache.max_accelerated_files=5000:' /data/conf/php/php.ini

#;内存“浪费”达到此值对应的百分比,就会发起一个重启调度.

RUN sed -i 's:;opcache.max_wasted_percentage=5:opcache.max_wasted_percentage=5:' /data/conf/php/php.ini

#2s检查一次文件更新 注意:0是一直检查不是关闭,推荐 60

RUN sed -i 's:;opcache.revalidate_freq=2:opcache.revalidate_freq=60:' /data/conf/php/php.ini

#是否保存文件/函数的注释   如果apigen、Doctrine、 ZF2、 PHPUnit需要文件注释,推荐 0

RUN sed -i 's:;opcache.save_comments=1:opcache.save_comments=0:' /data/conf/php/php.ini

#打开快速关闭, 打开这个在PHP Request Shutdown的时候会收内存的速度会提高

RUN sed -i 's:;opcache.fast_shutdown=0:opcache.fast_shutdown=1:' /data/conf/php/php.ini

COPY ./install/run.sh /usr/src/run.sh

RUN chmod 755 /usr/src/run.sh

RUN apk del tzdata && 

        rm -rf /var/cache/apk/* && 

        rm -rf /root/.cache && 

        rm -rf /tmp/* && 

        rm -rf /package.xml

VOLUME ["/data/www""/data/log""/data/conf"]

# 对其他容器开放9000端口

EXPOSE 80 443

CMD ["/usr/src/run.sh"]


使用方法:

docker run -d -t -p 80:80 --name tengine-with-php5.6 --link mysql:mysql --volumes-from mysql -v d:/:/data/www/ -v D:/log:/data/log -v D:/conf:/data/conf tengine-php:5.6-fpm-alpine

本博客所有文章如无特别注明均为原创。作者:nevergreen复制或转载请以超链接形式注明转自
原文地址《Docker安装tengine,php和一些扩展

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)