Docker:PHP7镜像构建

一.前言

公司php项目准备迁入docker,kubernetes进行管理,本文将介绍如何制作镜像,如何安装php扩展。

官方文档:https://hub.docker.com/_/php

二.Dockerfile

1.安装依赖

apk update &&apk add --no-cache autoconf gcc g++ libtool \
   make libmemcached zlib libmemcached-dev libpng \
     libpng-dev freetype-dev libjpeg-turbo-dev gettext-dev libmcrypt-dev\

2.安装gd库

gettext sockets pdo_mysql mysqli 同样的方式安装
docker-php-ext-configure gd \
    --with-freetype-dir=/usr/include/ \
    --with-jpeg-dir=/usr/include/ \
    --with-png-dir=/usr/include/  \
docker-php-ext-install -j$(nproc) gd gettext sockets pdo_mysql mysqli

3.安装redis扩展

swoole  mcrypt redis memcached 用pecl 安装,可指定版本号

pecl install mcrypt
pecl install igbinary
pecl install swoole-4.4.17
pecl install redis-5.2.1
pecl install memcached
docker-php-ext-enable memcached  igbinary  swoole redis memcached

4.dickerfile文件

FROM php:7.2.16-fpm-alpine
#更换阿里源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories\ 
#nobody uid和gid改为99
&& sed -i s/65534/99/g /etc/passwd &&sed -i s/65534/99/g /etc/group \
&& apk update &&apk add --no-cache autoconf gcc g++ \
    libtool make libmemcached zlib libmemcached-dev libpng \
    libpng-dev freetype-dev libjpeg-turbo-dev gettext-dev libmcrypt-dev\
&&docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/  \
&& docker-php-ext-install -j$(nproc) gd gettext sockets pdo_mysql mysqli\
#mcrypt
&&pecl install mcrypt\
&& docker-php-ext-enable mcrypt\
#igbinary
&& pecl install igbinary\
&& docker-php-ext-enable igbinary\
#swoole
&& pecl install swoole-4.4.17\
&& docker-php-ext-enable swoole\
#redis 
&& pecl install redis-5.2.1\
&& docker-php-ext-enable redis\
#memcached
&& pecl install memcached\
&& docker-php-ext-enable memcached\
&& mkdir -p /data/logs&&mkdir -p /data/www
COPY php.ini $PHP_INI_DIR/php.ini
COPY www.conf /usr/local/etc/php-fpm.d/www.conf
WORKDIR  /data/www

5.配置文件

php.ini

  1 [PHP]
  2 engine = On
  3 short_open_tag = Off
  4 asp_tags = Off
  5 precision = 14
  6 output_buffering = 4096
  7 zlib.output_compression = Off
  8 implicit_flush = Off
  9 unserialize_callback_func =
 10 serialize_precision = 17
 11 disable_functions = system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,dl,popen,pcntl_exec,socket_accept,socket_bind,socket_clear_error,socket_close,socket_connect,socket_create_listen,socket_create_pair,socket_create,socket_get_option,socket_getpeername,socket_getsockname,socket_last_error,socket_listen,socket_read,socket_recv,socket_recvfrom,socket_select,socket_send,socket_sendto,socket_set_block,socket_set_nonblock,socket_set_option,socket_shutdown,socket_strerror,socket_write,stream_socket_client,stream_socket_server,pfsockopen,disk_total_space,disk_free_space,diskfreespace,getrusage,get_current_user,getmyuid,getmypid,dl,leak,listen,chgrp,link,symlink,dlopen,proc_nice,proc_get_stats,proc_terminate,shell_exec,sh2_exec,posix_getpwuid,posix_getgrgid,posix_kill,ini_restore,mkfifo,dbmopen,dbase_open,filepro,filepro_rowcount,posix_mkfifo
 12 disable_classes =
 13 zend.enable_gc = On
 14 expose_php = On
 15 max_execution_time = 30
 16 max_input_time = 60
 17 memory_limit = 128M
 18 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
 19 display_errors = Off
 20 display_startup_errors = Off
 21 log_errors = On
 22 log_errors_max_len = 1024
 23 ignore_repeated_errors = Off
 24 ignore_repeated_source = Off
 25 report_memleaks = On
 26 track_errors = Off
 27 html_errors = On
 28 variables_order = "GPCS"
 29 request_order = "GP"
 30 register_argc_argv = Off
 31 auto_globals_jit = On
 32 post_max_size = 8M
 33 auto_prepend_file =
 34 auto_append_file =
 35 default_mimetype = "text/html"
 36 default_charset = "UTF-8"
 37 doc_root =
 38 user_dir =
 39 enable_dl = Off
 40 file_uploads = On
 41 upload_max_filesize = 2M
 42 max_file_uploads = 20
 43 allow_url_fopen = On
 44 allow_url_include = Off
 45 default_socket_timeout = 60
 46 [CLI Server]
 47 cli_server.color = On
 48 [Date]
 49 date.timezone = "Asia/Shanghai"
 50 [filter]
 51 [iconv]
 52 [intl]
 53 [sqlite3]
 54 [Pcre]
 55 [Pdo]
 56 [Pdo_mysql]
 57 pdo_mysql.cache_size = 2000
 58 pdo_mysql.default_socket=
 59 [Phar]
 60 [mail function]
 61 SMTP = localhost
 62 smtp_port = 25
 63 mail.add_x_header = On
 64 [SQL]
 65 sql.safe_mode = Off
 66 [ODBC]
 67 odbc.allow_persistent = On
 68 odbc.check_persistent = On
 69 odbc.max_persistent = -1
 70 odbc.max_links = -1
 71 odbc.defaultlrl = 4096
 72 odbc.defaultbinmode = 1
 73 [Interbase]
 74 ibase.allow_persistent = 1
 75 ibase.max_persistent = -1
 76 ibase.max_links = -1
 77 ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
 78 ibase.dateformat = "%Y-%m-%d"
 79 ibase.timeformat = "%H:%M:%S"
 80 [MySQL]
 81 mysql.allow_local_infile = On
 82 mysql.allow_persistent = On
 83 mysql.cache_size = 2000
 84 mysql.max_persistent = -1
 85 mysql.max_links = -1
 86 mysql.default_port =
 87 mysql.default_socket =
 88 mysql.default_host =
 89 mysql.default_user =
 90 mysql.default_password =
 91 mysql.connect_timeout = 60
 92 mysql.trace_mode = Off
 93 [MySQLi]
 94 mysqli.max_persistent = -1
 95 mysqli.allow_persistent = On
 96 mysqli.max_links = -1
 97 mysqli.cache_size = 2000
 98 mysqli.default_port = 3306
 99 mysqli.default_socket =
100 mysqli.default_host =
101 mysqli.default_user =
102 mysqli.default_pw =
103 mysqli.reconnect = Off
104 [mysqlnd]
105 mysqlnd.collect_statistics = On
106 mysqlnd.collect_memory_statistics = Off
107 [OCI8]
108 [PostgreSQL]
109 pgsql.allow_persistent = On
110 pgsql.auto_reset_persistent = Off
111 pgsql.max_persistent = -1
112 pgsql.max_links = -1
113 pgsql.ignore_notice = 0
114 pgsql.log_notice = 0
115 [Sybase-CT]
116 sybct.allow_persistent = On
117 sybct.max_persistent = -1
118 sybct.max_links = -1
119 sybct.min_server_severity = 10
120 sybct.min_client_severity = 10
121 [bcmath]
122 bcmath.scale = 0
123 [browscap]
124 [Session]
125 session.save_handler = files
126 session.use_strict_mode = 0
127 session.use_cookies = 1
128 session.use_only_cookies = 1
129 session.name = PHPSESSID
130 session.auto_start = 0
131 session.cookie_lifetime = 0
132 session.cookie_path = /
133 session.cookie_domain =
134 session.cookie_httponly =
135 session.serialize_handler = php
136 session.gc_probability = 1
137 session.gc_divisor = 1000
138 session.gc_maxlifetime = 1440
139 session.referer_check =
140 session.cache_limiter = nocache
141 session.cache_expire = 180
142 session.use_trans_sid = 0
143 session.hash_function = 0
144 session.hash_bits_per_character = 5
145 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
146 [MSSQL]
147 mssql.allow_persistent = On
148 mssql.max_persistent = -1
149 mssql.max_links = -1
150 mssql.min_error_severity = 10
151 mssql.min_message_severity = 10
152 mssql.compatibility_mode = Off
153 mssql.secure_connection = Off
154 [Assertion]
155 [COM]
156 [mbstring]
157 [gd]
158 [exif]
159 [Tidy]
160 tidy.clean_output = Off
161 [soap]
162 soap.wsdl_cache_enabled=1
163 soap.wsdl_cache_dir="/tmp"
164 soap.wsdl_cache_ttl=86400
165 soap.wsdl_cache_limit = 5
166 [sysvshm]
167 [ldap]
168 ldap.max_links = -1
169 [mcrypt]
170 [dba]
171 zend_extension=opcache.so
172 opcache.enable=1
173 opcache.enable_cli=0
174 opcache.memory_consumption=256
175 opcache.interned_strings_buffer=8
176 opcache.max_accelerated_files=10000
177 opcache.max_wasted_percentage=5
178 opcache.use_cwd=0
179 opcache.validate_timestamps=1
180 opcache.revalidate_freq=60
181 opcache.revalidate_path=0
182 opcache.save_comments=1
183 opcache.fast_shutdown=1
184 opcache.enable_file_override=0
185 opcache.optimization_level=1
186 opcache.consistency_checks=0
187 opcache.file_cache="/tmp/phpop"
188 opcache.huge_code_pages=1
189 opcache.fast_shutdown=1
190 [curl]
191 [openssl]
php.ini

www.conf

 1 [global]
 2 [www]
 3 user = nobody
 4 group = nobody
 5 listen = 0.0.0.0:9000
 6 pm = dynamic
 7 pm.max_children = 30
 8 pm.start_servers = 5
 9 pm.min_spare_servers = 1
10 pm.max_spare_servers = 5
11 pm.process_idle_timeout = 20s;
12 pm.max_requests = 5000
13 slowlog = /data/logs/php/slow.log
14 request_slowlog_timeout = 5
15 security.limit_extensions = .php .html .htm
16 php_admin_value[error_log] = /data/logs/php/php-fpm.err.log
17 php_admin_flag[log_errors] = on
18 php_admin_value[memory_limit] = 128M
www.conf

注:配置文件仅供参考

posted @ 2020-04-10 13:32  人生是一场修行  阅读(3047)  评论(0编辑  收藏  举报