docker部署php环境
编写Dockerfile
FROM php:7.4-fpm
# 扩展
RUN docker-php-ext-install -j$(nproc) bcmath calendar exif gettext sockets dba mysqli pcntl pdo_mysql sysvmsg sysvsem sysvshm zlib zip xmlwriter xml xmlreader simplexml shmop mcrypt mbstring libxml hash
# redis 扩展
#RUN pecl install redis-5.0.0 && docker-php-ext-enable redis
# 镜像信息
LABEL Author="arick"
LABEL Version="2022.7"
LABEL Description="PHP 7.4 开发环境镜像"
FROM php:5.6.40-fpm
# mysqli, pcntl, pdo_mysql, shmop, sysvmsg, sysvsem, sysvshm 扩展
RUN docker-php-ext-install -j$(nproc) bcmath calendar exif gettext sockets dba mysqli pcntl pdo_mysql sysvmsg sysvsem sysvshm zlib zip xmlwriter xml xmlreader simplexml shmop mcrypt mbstring libxml hash
# redis 扩展
RUN pecl install redis-5.0.0 && docker-php-ext-enable redis
# 镜像信息
LABEL Author="arick"
LABEL Version="2022.7"
LABEL Description="PHP 7.4 开发环境镜像"
构建镜像
docker build -t php-mysqli:7.4-fpm .
运行php容器
docker run --name xiaoshuoxia --restart=always -v /opt/wwwroot/xiaoshuoxia:/www/xiaoshuoxia -p 9901:9000 -d php-mysqli:7.4-fpm
运行mysql容器
docker run --name mysql-5.7 --restart=always -v /opt/data/mysql/data:/var/lib/mysql -v /opt/data/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=Aq123456 -p 3306:3306 -d mysql:5.7.37
配置nginx
vim /etc/nginx/conf.d/xiaoshuoxia.conf
server {
listen 80;
server_name sing.arick.top; #这 里 修 改 成 自 己 的 域 名 , 我 这 里 是 本 地 运 行 所 以 填 的 localhost
location / {
root /opt/wwwroot/xiaoshuoxia;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#当 请 求 网 站 下 php文 件 的 时 候 , 反 向 代 理 到 php-fpm
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9901;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/xiaoshuoxia/$fastcgi_script_name;
include fastcgi_params;
}
#方法2
location ~ \.php$ { include /etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口
}
#注 fastcgi_params和fastcgi.conf 不可同时使用
}
关于fastcgi的配置文件,目前fastcgi的配置文件一般放在nginx.conf同级目录下,配置文件形式,一般有两种:
fastcgi.conf 和 fastcgi_params。不同的nginx版本会有不同的配置文件,这两个配置文件有一个非常重要的区别:fastcgi_parames文件中缺少下列配置: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 我们可以打开fastcgi_params文件加上上述行,也可以在要使用配置的地方动态添加。使得该配置生效。