Skip to main content

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文件加上上述行,也可以在要使用配置的地方动态添加。使得该配置生效。