# 配置文件可能会改动比较多,这样分开当配置文件更改时可以直接使用缓存跳过编译步骤,加快构建速度。
RUN set_php_variable(){
local key=$1;
local value=$2;
if grep -q -E "^$keys*=" php.ini;then
sed -i -r "s#^$keys*=.*#$key=$value#" php.ini;
else
sed -i -r "s#;s*$keys*=.*#$key=$value#" php.ini;
fi;
if ! grep -q -E "^$keys*=" php.ini;then
echo "$key=$value" >> php.ini;
fi;
}
&& BASE_DIR=/home/docker/php
&& set_php_variable disable_functions "dl,eval,assert,exec,popen,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open"
&& set_php_variable expose_php Off
&& set_php_variable error_log ${BASE_DIR}/php_errors.log
&& set_php_variable request_order "CGP"
&& set_php_variable cgi.fix_pathinfo 0
&& set_php_variable short_open_tag on
&& set_php_variable date.timezone Asia/Chongqing
&& sed -i 's/^user =.*/user = www-data/' php-fpm.conf
&& sed -i 's/^group =.*/group = www-data/' php-fpm.conf
&& sed -i "s#;slowlog = log/$pool.log.slow#slowlog = ${BASE_DIR}/$pool.log.slow#" php-fpm.conf
&& sed -i 's/;request_slowlog_timeout = 0/request_slowlog_timeout = 5/' php-fpm.conf
&& sed -i 's/^pm.max_children.*/pm.max_children =20/' php-fpm.conf
&& sed -i 's/^pm.start_servers.*/pm.start_servers =5/' php-fpm.conf
&& sed -i 's/^pm.min_spare_servers.*/pm.min_spare_servers =3/' php-fpm.conf
&& sed -i 's/^pm.max_spare_servers.*/pm.max_spare_servers =8/' php-fpm.conf
&& sed -i '/[global]/adaemonize =no' php-fpm.conf
&& sed -i 's/^listen.*/listen =0.0.0.0:9000/' php-fpm.conf
&& echo "[opcache]n
zend_extension=opcache.son
opcache.memory_consumption=128n
opcache.interned_strings_buffer=8n
opcache.max_accelerated_files=4000n
opcache.revalidate_freq=60n
opcache.fast_shutdown=1 n" >> php.ini
ENTRYPOINT ["/usr/local/php/sbin/php-fpm"]
EXPOSE 9000
mysql Dockerfile
创建Dockerfile/centos.bz/mysql/Dockerfile文件,内容如下:
FROM mysql:5.6
LABEL maintainer "admin@centos.bz"
COPY my.cnf /etc/mysql/my.cnf
这个Dockerfile非常简单,直接使用了官方的mysql镜像,唯一区别是我们使用自己定义的my.cnf配置文件。
对于my.cnf配置文件,需要把日志,data目录指向/home/docker/mysql,一个my.cnf示例文件如下:
# Generated by EZHTTP at 2016-02-03 01:05:29[mysql]# CLIENT #
port = 3306
socket = /home/docker/mysql/mysql.sock
[mysqld]# GENERAL #










