一、概述
在上一篇文章介绍了nginx+php-fpm,链接如下:
https://www.cnblogs.com/xiao987334176/p/12918413.html
nginx和php-fpm是2个独立的镜像,在实际环境部署过程中,发现配置比较麻烦,排错比较耗费实际。
因此,需要将nginx和php-fpm 这2个镜像合并为一个。
二、正式操作
目录结构
新建目录/opt/nginx_php,目录结构如下:
./ ├── default ├── dockerfile ├── README.md └── run.sh
default
server { listen 80; server_name localhost; root /var/www/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
dockerfile
FROM crunchgeek/php-fpm:7.3-r7 ADD default / ADD run.sh / RUN apt-get update && \ apt-get install -y nginx net-tools && \ apt-get clean all && \ mv /default /etc/nginx/sites-available/ && \ chmod 755 /run.sh EXPOSE 80 EXPOSE 9000 ENTRYPOINT ["/run.sh"]
README.md
# 说明 nginx+php-fpm # 版本说明 ```bash nginx 1.14.2 PHP 7.3.17 ``` # php-fpm模块说明 默认已经安装如下模块 ```bash apc apcu bcmath bz2 calendar Core ctype curl date dba dom ds enchant exif fileinfo filter ftp gd gettext gmp hash iconv igbinary imagick imap interbase intl json ldap libxml mbstring memcache memcached mongodb msgpack mysqli mysqlnd newrelic openssl pcntl pcre PDO pdo_dblib pdo_mysql pdo_pgsql pdo_sqlite pdo_sqlsrv pgsql Phar posix pspell readline recode redis Reflection session shmop SimpleXML soap sockets sodium SPL sqlite3 ssh2 standard sysvmsg sysvsem sysvshm test tidy tokenizer wddx xdebug xml xmlreader xmlrpc xmlwriter xsl Zend OPcache zip zlib ``` # 构建镜像 ```bash docker build -t nginx_php:1 . ``` # 运行 ```bash docker run -d -it --restart=always --name nginx_php -p 80:80 nginx_php:1 ``` # 说明 ```bash default 是示例nginx配置文件,可根据实际情况修改 ``` # phpinfo 将`test.php` ```php <?php phpinfo(); ?> ``` 拷贝到容器目录`/var/www/html` 通过以下url即可访问 ```bash http://ip地址/test.php ``` # 注意 phpinfo不要暴露在公网中访问,黑客知道php版本后,会通过漏洞攻击。 <br/> <br/> Copyright (c) 2020-present, xiao You
run.sh
#!/bin/bash # 后台启动 /usr/local/sbin/php-fpm -D # 关闭后台启动,hold住进程 nginx -g 'daemon off;'
构建镜像
cd /opt/nginx_php docker build -t nginx_php:1 .
运行
docker run -d -it --restart=always --name nginx_php -p 80:80 nginx_php:1
访问页面
http://ip地址
效果如下:
phpinfo页面
新建test.php
cd /opt/nginx_php vi test.php
内容如下:
<?php
phpinfo();
?>
拷贝到容器中
docker cp test.php nginx_php:/var/www/html/
访问test.php
http://ip地址/test.php
效果如下: