nginx+php-fpm docker镜像合二为一
<h1>一、概述</h1><p>在上一篇文章介绍了nginx+php-fpm,链接如下:</p>
<p>https://www.cnblogs.com/xiao987334176/p/12918413.html</p>
<p> </p>
<p>nginx和php-fpm是2个独立的镜像,在实际环境部署过程中,发现配置比较麻烦,排错比较耗费实际。</p>
<p>因此,需要将nginx和php-fpm 这2个镜像合并为一个。</p>
<p> </p>
<h1>二、nginx+php-fpm封装</h1>
<h2>目录结构</h2>
<p>由于crunchgeek/php-fpm:7.3-r7 镜像比较大,有1.08GB。</p>
<p>因此需要使用alpine:3.11重新封装才行。</p>
<p> </p>
<p>在dockerhub上面,php已经有官方的镜像了,php:7.3-fpm-alpine3.11。</p>
<p>由于项目php7cms依赖于组件mysqli,因此需要额外安装才行。</p>
<p> </p>
<p>新建目录/opt/alpine_nginx_php7.3,结构如下:</p>
<div class="cnblogs_code">
<pre>./<span style="color: rgba(0, 0, 0, 1)">
├── default.conf
├── dockerfile
├── index.html
├── php.ini
├── repositories
└── run.</span><span style="color: rgba(0, 0, 255, 1)">sh</span></pre>
</div>
<p> </p>
<p>default.conf</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">server {
listen </span><span style="color: rgba(128, 0, 128, 1)">80</span><span style="color: rgba(0, 0, 0, 1)">;
server_name localhost;
root </span>/var/www/<span style="color: rgba(0, 0, 0, 1)">html;
index index.html index.htm index.nginx</span>-<span style="color: rgba(0, 0, 0, 1)">debian.html;
location </span>/<span style="color: rgba(0, 0, 0, 1)"> {
try_files $uri $uri</span>/ =<span style="color: rgba(128, 0, 128, 1)">404</span><span style="color: rgba(0, 0, 0, 1)">;
}
location </span>~<span style="color: rgba(0, 0, 0, 1)"> \.php$ {
fastcgi_pass </span><span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span>:<span style="color: rgba(128, 0, 128, 1)">9000</span><span style="color: rgba(0, 0, 0, 1)">;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}</span></pre>
</div>
<p> </p>
<p>dockerfile</p>
<div class="cnblogs_code">
<pre>FROM php:<span style="color: rgba(128, 0, 128, 1)">7.3</span>-fpm-alpine3.<span style="color: rgba(128, 0, 128, 1)">11</span><span style="color: rgba(0, 0, 0, 1)">
ADD repositories </span>/etc/apk/<span style="color: rgba(0, 0, 0, 1)">repositories
ADD default.conf </span>/<span style="color: rgba(0, 0, 0, 1)">
ADD index.html </span>/<span style="color: rgba(0, 0, 0, 1)">
ADD run.</span><span style="color: rgba(0, 0, 255, 1)">sh</span> /<span style="color: rgba(0, 0, 0, 1)">
ADD php.ini </span>/usr/local/etc/php/<span style="color: rgba(0, 0, 0, 1)">
RUN apk update </span>&& apk add nginx &&<span style="color: rgba(0, 0, 0, 1)"> \
apk add m4 autoconf </span><span style="color: rgba(0, 0, 255, 1)">make</span> <span style="color: rgba(0, 0, 255, 1)">gcc</span> g++ linux-headers &&<span style="color: rgba(0, 0, 0, 1)"> \
docker</span>-php-ext-<span style="color: rgba(0, 0, 255, 1)">install</span> pdo_mysql opcache mysqli &&<span style="color: rgba(0, 0, 0, 1)"> \
</span><span style="color: rgba(0, 0, 255, 1)">mkdir</span> /run/nginx &&<span style="color: rgba(0, 0, 0, 1)"> \
</span><span style="color: rgba(0, 0, 255, 1)">mv</span> /default.conf /etc/nginx/conf.d &&<span style="color: rgba(0, 0, 0, 1)"> \
</span><span style="color: rgba(0, 0, 255, 1)">mv</span> /index.html /var/www/html &&<span style="color: rgba(0, 0, 0, 1)"> \
</span><span style="color: rgba(0, 0, 255, 1)">touch</span> /run/nginx/nginx.pid &&<span style="color: rgba(0, 0, 0, 1)"> \
</span><span style="color: rgba(0, 0, 255, 1)">chmod</span> <span style="color: rgba(128, 0, 128, 1)">755</span> /run.<span style="color: rgba(0, 0, 255, 1)">sh</span> &&<span style="color: rgba(0, 0, 0, 1)"> \
apk del m4 autoconf </span><span style="color: rgba(0, 0, 255, 1)">make</span> <span style="color: rgba(0, 0, 255, 1)">gcc</span> g++ linux-<span style="color: rgba(0, 0, 0, 1)">headers
EXPOSE </span><span style="color: rgba(128, 0, 128, 1)">80</span><span style="color: rgba(0, 0, 0, 1)">
EXPOSE </span><span style="color: rgba(128, 0, 128, 1)">9000</span><span style="color: rgba(0, 0, 0, 1)">
ENTRYPOINT [</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/run.sh</span><span style="color: rgba(128, 0, 0, 1)">"</span>]</pre>
</div>
<p> </p>
<p><span style="color: rgba(255, 0, 0, 1)">注意:这里我额外安装了pdo_mysql,因为某些php项目用的是这个模块。opcache是用来做性能加速的。</span></p>
<p> </p>
<p>index.html</p>
<div class="cnblogs_code">
<pre><!DOCTYPE html>
<html>
<<span style="color: rgba(0, 0, 255, 1)">head</span>>
<title>Welcome to nginx!</title>
<style><span style="color: rgba(0, 0, 0, 1)">
body {
width: 35em;
margin: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)"> auto;
font</span>-family: Tahoma, Verdana, Arial, sans-<span style="color: rgba(0, 0, 0, 1)">serif;
}
</span></style>
</<span style="color: rgba(0, 0, 255, 1)">head</span>>
<body>
<h1>Welcome to nginx!</h1>
<p><span style="color: rgba(0, 0, 0, 1)">If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">For online documentation and support please refer to
</span><a href=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://nginx.org/</span><span style="color: rgba(128, 0, 0, 1)">"</span>>nginx.org</a>.<br/><span style="color: rgba(0, 0, 0, 1)">
Commercial support is available at
</span><a href=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">http://nginx.com/</span><span style="color: rgba(128, 0, 0, 1)">"</span>>nginx.com</a>.</p>
<p><em>Thank you <span style="color: rgba(0, 0, 255, 1)">for</span> using nginx.</em></p>
</body>
</html></pre>
</div>
<p> </p>
<p>php.ini</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_e32bca61-7c1a-4a69-a8bd-732a75f8640c" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_e32bca61-7c1a-4a69-a8bd-732a75f8640c" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_e32bca61-7c1a-4a69-a8bd-732a75f8640c" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 0, 1)">
engine </span>=<span style="color: rgba(0, 0, 0, 1)"> On
short_open_tag </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
precision </span>= <span style="color: rgba(128, 0, 128, 1)">14</span><span style="color: rgba(0, 0, 0, 1)">
output_buffering </span>= <span style="color: rgba(128, 0, 128, 1)">4096</span><span style="color: rgba(0, 0, 0, 1)">
zlib.output_compression </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
implicit_flush </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
unserialize_callback_func </span>=<span style="color: rgba(0, 0, 0, 1)">
serialize_precision </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
disable_functions </span>=<span style="color: rgba(0, 0, 0, 1)">
disable_classes </span>=<span style="color: rgba(0, 0, 0, 1)">
zend.enable_gc </span>=<span style="color: rgba(0, 0, 0, 1)"> On
expose_php </span>=<span style="color: rgba(0, 0, 0, 1)"> On
max_execution_time </span>= <span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">
max_input_time </span>= <span style="color: rgba(128, 0, 128, 1)">60</span><span style="color: rgba(0, 0, 0, 1)">
memory_limit </span>=<span style="color: rgba(0, 0, 0, 1)"> 128M
error_reporting </span>= E_ALL & ~E_DEPRECATED & ~<span style="color: rgba(0, 0, 0, 1)">E_STRICT
display_errors </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
display_startup_errors </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
log_errors </span>=<span style="color: rgba(0, 0, 0, 1)"> On
log_errors_max_len </span>= <span style="color: rgba(128, 0, 128, 1)">1024</span><span style="color: rgba(0, 0, 0, 1)">
ignore_repeated_errors </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
ignore_repeated_source </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
report_memleaks </span>=<span style="color: rgba(0, 0, 0, 1)"> On
html_errors </span>=<span style="color: rgba(0, 0, 0, 1)"> On
variables_order </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">GPCS</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
request_order </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">GP</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
register_argc_argv </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
auto_globals_jit </span>=<span style="color: rgba(0, 0, 0, 1)"> On
post_max_size </span>=<span style="color: rgba(0, 0, 0, 1)"> 8M
auto_prepend_file </span>=<span style="color: rgba(0, 0, 0, 1)">
auto_append_file </span>=<span style="color: rgba(0, 0, 0, 1)">
default_mimetype </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">text/html</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
default_charset </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">UTF-8</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
doc_root </span>=<span style="color: rgba(0, 0, 0, 1)">
user_dir </span>=<span style="color: rgba(0, 0, 0, 1)">
enable_dl </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
cgi.fix_pathinfo</span>=<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
file_uploads </span>=<span style="color: rgba(0, 0, 0, 1)"> On
upload_max_filesize </span>=<span style="color: rgba(0, 0, 0, 1)"> 2M
max_file_uploads </span>= <span style="color: rgba(128, 0, 128, 1)">20</span><span style="color: rgba(0, 0, 0, 1)">
allow_url_fopen </span>=<span style="color: rgba(0, 0, 0, 1)"> On
allow_url_include </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
default_socket_timeout </span>= <span style="color: rgba(128, 0, 128, 1)">60</span><span style="color: rgba(0, 0, 0, 1)">
cli_server.color </span>=<span style="color: rgba(0, 0, 0, 1)"> On
pdo_mysql.default_socket</span>=<span style="color: rgba(0, 0, 0, 1)">
SMTP </span>=<span style="color: rgba(0, 0, 0, 1)"> localhost
smtp_port </span>= <span style="color: rgba(128, 0, 128, 1)">25</span><span style="color: rgba(0, 0, 0, 1)">
mail.add_x_header </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
odbc.allow_persistent </span>=<span style="color: rgba(0, 0, 0, 1)"> On
odbc.check_persistent </span>=<span style="color: rgba(0, 0, 0, 1)"> On
odbc.max_persistent </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
odbc.max_links </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
odbc.defaultlrl </span>= <span style="color: rgba(128, 0, 128, 1)">4096</span><span style="color: rgba(0, 0, 0, 1)">
odbc.defaultbinmode </span>= <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
ibase.allow_persistent </span>= <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
ibase.max_persistent </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
ibase.max_links </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
ibase.timestampformat </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">%Y-%m-%d %H:%M:%S</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
ibase.dateformat </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">%Y-%m-%d</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
ibase.timeformat </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">%H:%M:%S</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
mysqli.max_persistent </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
mysqli.allow_persistent </span>=<span style="color: rgba(0, 0, 0, 1)"> On
mysqli.max_links </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
mysqli.default_port </span>= <span style="color: rgba(128, 0, 128, 1)">3306</span><span style="color: rgba(0, 0, 0, 1)">
mysqli.default_socket </span>=<span style="color: rgba(0, 0, 0, 1)">
mysqli.default_host </span>=<span style="color: rgba(0, 0, 0, 1)">
mysqli.default_user </span>=<span style="color: rgba(0, 0, 0, 1)">
mysqli.default_pw </span>=<span style="color: rgba(0, 0, 0, 1)">
mysqli.reconnect </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
mysqlnd.collect_statistics </span>=<span style="color: rgba(0, 0, 0, 1)"> On
mysqlnd.collect_memory_statistics </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
pgsql.allow_persistent </span>=<span style="color: rgba(0, 0, 0, 1)"> On
pgsql.auto_reset_persistent </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
pgsql.max_persistent </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
pgsql.max_links </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
pgsql.ignore_notice </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
pgsql.log_notice </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
bcmath.scale </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
session.save_handler </span>=<span style="color: rgba(0, 0, 0, 1)"> files
session.use_strict_mode </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
session.use_cookies </span>= <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
session.use_only_cookies </span>= <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
session.name </span>=<span style="color: rgba(0, 0, 0, 1)"> PHPSESSID
session.auto_start </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
session.cookie_lifetime </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
session.cookie_path </span>= /<span style="color: rgba(0, 0, 0, 1)">
session.cookie_domain </span>=<span style="color: rgba(0, 0, 0, 1)">
session.cookie_httponly </span>=<span style="color: rgba(0, 0, 0, 1)">
session.cookie_samesite </span>=<span style="color: rgba(0, 0, 0, 1)">
session.serialize_handler </span>=<span style="color: rgba(0, 0, 0, 1)"> php
session.gc_probability </span>= <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
session.gc_divisor </span>= <span style="color: rgba(128, 0, 128, 1)">1000</span><span style="color: rgba(0, 0, 0, 1)">
session.gc_maxlifetime </span>= <span style="color: rgba(128, 0, 128, 1)">1440</span><span style="color: rgba(0, 0, 0, 1)">
session.referer_check </span>=<span style="color: rgba(0, 0, 0, 1)">
session.cache_limiter </span>=<span style="color: rgba(0, 0, 0, 1)"> nocache
session.cache_expire </span>= <span style="color: rgba(128, 0, 128, 1)">180</span><span style="color: rgba(0, 0, 0, 1)">
session.use_trans_sid </span>= <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
session.sid_length </span>= <span style="color: rgba(128, 0, 128, 1)">26</span><span style="color: rgba(0, 0, 0, 1)">
session.trans_sid_tags </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">a=href,area=href,frame=src,form=</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
session.sid_bits_per_character </span>= <span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">
zend.assertions </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
tidy.clean_output </span>=<span style="color: rgba(0, 0, 0, 1)"> Off
soap.wsdl_cache_enabled</span>=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
soap.wsdl_cache_dir</span>=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/tmp</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
soap.wsdl_cache_ttl</span>=<span style="color: rgba(128, 0, 128, 1)">86400</span><span style="color: rgba(0, 0, 0, 1)">
soap.wsdl_cache_limit </span>= <span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">
ldap.max_links </span>= -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>此文件是从容器里面copy出来的,路径为:/usr/local/etc/php/php.ini-production</p>
<p>去除了注释和多余的空行。</p>
<p>此配置文件,修改了<span style="color: rgba(255, 0, 0, 1)">cgi.fix_pathinfo=0</span></p>
<p>如果需要更改其他配置,修改此文件即可。</p>
<p> </p>
<p>repositories</p>
<div class="cnblogs_code">
<pre>https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/alpine/v3.11/main/</span>
https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">mirrors.aliyun.com/alpine/v3.11/community/</span></pre>
</div>
<p>这个是阿里云的alpine更新源</p>
<p> </p>
<p>run.sh</p>
<div class="cnblogs_code">
<pre>#!/bin/<span style="color: rgba(0, 0, 255, 1)">sh</span><span style="color: rgba(0, 0, 0, 1)">
# 后台启动
php</span>-fpm -<span style="color: rgba(0, 0, 0, 1)">D
# 关闭后台启动,hold住进程
nginx </span>-g <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">daemon off;</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
</div>
<p> </p>
<h2>封装镜像</h2>
<div class="cnblogs_code">
<pre>cd /opt/alpine_nginx_php7.<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">
docker build </span>-t alpine_nginx_php7.<span style="color: rgba(128, 0, 128, 1)">3</span>:<span style="color: rgba(128, 0, 128, 1)">1</span> .</pre>
</div>
<p> </p>
<p>查看镜像大小</p>
<div class="cnblogs_code">
<pre># <span style="color: rgba(255, 0, 0, 1)">docker images|grep alpine_nginx_php7.3</span><span style="color: rgba(0, 0, 0, 1)">
alpine_nginx_php7.</span><span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(128, 0, 128, 1)">1</span> 927ddfbdd027 <span style="color: rgba(128, 0, 128, 1)">14</span> minutes ago <span style="color: rgba(128, 0, 128, 1)">78</span>.4MB</pre>
</div>
<p>可以看到这个镜像只有78.4MB。</p>
<p> </p>
<p>运行镜像</p>
<div class="cnblogs_code">
<pre>docker run -it--name alpine_nginx_php7.<span style="color: rgba(128, 0, 128, 1)">3</span> -p <span style="color: rgba(128, 0, 128, 1)">80</span>:<span style="color: rgba(128, 0, 128, 1)">80</span> alpine_nginx_php7.<span style="color: rgba(128, 0, 128, 1)">3</span>:<span style="color: rgba(128, 0, 128, 1)">1</span> .</pre>
</div>
<p> </p>
<p>访问首页</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ip地址/</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/1341090/202005/1341090-20200527200028390-1375221403.png" alt=""></p>
<p> </p>
<h2>phpinfo页面</h2>
<p>新建test.php</p>
<div class="cnblogs_code">
<pre>cd /opt/alpine_nginx_php7.<span style="color: rgba(128, 0, 128, 1)">3</span>
<span style="color: rgba(0, 0, 255, 1)">vi</span> test.php</pre>
</div>
<p> </p>
<p>内容如下:</p>
<div class="cnblogs_code">
<pre><?<span style="color: rgba(0, 0, 0, 1)">php
phpinfo();
</span>?></pre>
</div>
<p> </p>
<p>拷贝到容器中</p>
<div class="cnblogs_code">
<pre>docker <span style="color: rgba(0, 0, 255, 1)">cp</span> test.php alpine_nginx_php7.3:/var/www/html/</pre>
</div>
<p> </p>
<p>访问test.php</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ip地址/test.php</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/1341090/202005/1341090-20200527200353468-4766143.png" alt=""></p>
<p> </p>
<h1>三、运行PHP7CMS</h1>
<h2>下载源代码</h2>
<p>源代码下载地址:</p>
<p>http://down.chinaz.com/soft/38829.htm</p>
<p> </p>
<p>下载完成后,在windows10电脑中解压。</p>
<p>进入linux系统,创建空目录/opt/php7cms,将解压文件夹PHP7CMS的所有内容上传到/opt/php7cms中。</p>
<p>此时/opt/php7cms目录结构如下:</p>
<div class="cnblogs_code">
<pre># <span style="color: rgba(255, 0, 0, 1)">tree -L 1</span><span style="color: rgba(0, 0, 0, 1)">
.
├── admin.php
├── api
├── cache
├── config
├── index.php
├── </span><span style="color: rgba(0, 0, 255, 1)">install</span><span style="color: rgba(0, 0, 0, 1)">.php
├── LICENSE
├── php7cms
├── README.md
├── static
├── template
├── uploadfile
├── 安装方法.txt
└── 安装环境.docx</span></pre>
</div>
<p>-L 参数表示控制深度,这里只展示第一层。</p>
<p> </p>
<p>在此目录新建dockerfile</p>
<div class="cnblogs_code">
<pre>FROM alpine_nginx_php7.<span style="color: rgba(128, 0, 128, 1)">3</span>:<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
ADD default.conf </span>/etc/nginx/<span style="color: rgba(0, 0, 0, 1)">conf.d
ADD . </span>/var/www/html/<span style="color: rgba(0, 0, 0, 1)">PHP7CMS
RUN </span><span style="color: rgba(0, 0, 255, 1)">chown</span> www-data:www-data -R /var/www/html</pre>
</div>
<p> </p>
<p>在此目录新建default.conf</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">server {
listen </span><span style="color: rgba(128, 0, 128, 1)">80</span><span style="color: rgba(0, 0, 0, 1)">;
server_name localhost;
root </span>/var/www/html/<span style="color: rgba(0, 0, 0, 1)">PHP7CMS;
index index.php index.html index.htm;
location </span>~<span style="color: rgba(0, 0, 0, 1)"> \.php$ {
fastcgi_pass </span><span style="color: rgba(128, 0, 128, 1)">127.0</span>.<span style="color: rgba(128, 0, 128, 1)">0.1</span>:<span style="color: rgba(128, 0, 128, 1)">9000</span><span style="color: rgba(0, 0, 0, 1)">;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}</span></pre>
</div>
<p>这个文件用来将nginx默认的配置覆盖掉</p>
<p> </p>
<h2>封装镜像</h2>
<div class="cnblogs_code">
<pre>cd /opt/<span style="color: rgba(0, 0, 0, 1)">php7cms
docker build </span>-t php7cms:<span style="color: rgba(128, 0, 128, 1)">1</span> .</pre>
</div>
<p> </p>
<h2>运行docker</h2>
<p>先将之前运行的nginx_php删除掉,再运行php7cms。否则会端口冲突</p>
<div class="cnblogs_code">
<pre>docker <span style="color: rgba(0, 0, 255, 1)">rm</span> -<span style="color: rgba(0, 0, 0, 1)">f alpine_nginx_php7.3
docker run </span>-d -it --restart=always --name php7cms -p <span style="color: rgba(128, 0, 128, 1)">80</span>:<span style="color: rgba(128, 0, 128, 1)">80</span> php7cms:<span style="color: rgba(128, 0, 128, 1)">1</span></pre>
</div>
<p> </p>
<p>由于php7cms依赖于mysql,还得运行一个mysql才行。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">mkdir</span> -p /data/mysql/<span style="color: rgba(0, 0, 0, 1)">data
docker run </span>-d --name mysql5.<span style="color: rgba(128, 0, 128, 1)">7</span> --restart=always -e MYSQL_ROOT_PASSWORD=abcd@<span style="color: rgba(128, 0, 128, 1)">1234</span>-p <span style="color: rgba(128, 0, 128, 1)">3306</span>:<span style="color: rgba(128, 0, 128, 1)">3306</span> -v /data/mysql/data:/var/lib/mysql mysql:<span style="color: rgba(128, 0, 128, 1)">5.7</span> --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci</pre>
</div>
<p> </p>
<p>新建空的数据库cms</p>
<div class="cnblogs_code">
<pre># <span style="color: rgba(255, 0, 0, 1)">docker exec -it mysql5.7 /bin/</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)">bash</span>
# <span style="color: rgba(255, 0, 0, 1)">mysql </span></span><span style="color: rgba(255, 0, 0, 1)">-u root -pabcd@1234</span><span style="color: rgba(0, 0, 0, 1)">
mysql</span>> <span style="color: rgba(255, 0, 0, 1)">create database cms default character set utf8mb4 collate utf8mb4_unicode_ci;</span></pre>
</div>
<p> </p>
<h2>安装向导</h2>
<p>我的服务器ip地址为:10.212.20.213</p>
<p>访问安装页面</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">10.212.20.213/install.php</span></pre>
</div>
<p> </p>
<p>输入数据库连接信息</p>
<p><img src="https://img2020.cnblogs.com/blog/1341090/202005/1341090-20200526133519961-950007884.png" alt=""></p>
<p> </p>
<p>点击下一步后,提示安装完成。</p>
<p><img src="https://img2020.cnblogs.com/blog/1341090/202005/1341090-20200526133615995-1724935339.png" alt=""></p>
<p> </p>
<p> </p>
<p> </p>
<p>登录后台页面</p>
<p><img src="https://img2020.cnblogs.com/blog/1341090/202005/1341090-20200526133638957-671865596.png" alt=""></p>
<p> </p>
<p>默认用户名和密码都是admin</p>
<p> </p>
<p>登录成功后,效果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/1341090/202005/1341090-20200526133724642-382604951.png" alt=""></p>
<p> </p>
<p> </p>
<p>访问首页</p>
<div class="cnblogs_code">
<pre>http:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">10.212.20.213/</span></pre>
</div>
<p>效果如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/1341090/202005/1341090-20200526133805984-961780087.png" alt=""></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/xiao987334176/p/12960500.html
頁:
[1]