制作docker镜像php-7.4 fpm并运行nginx

第1步:启动容器(复制下面所有代码到SSH控制台并按回车)

docker run -it --name php74fpm php:7.4-fpm bash
docker-php-ext-install pdo_mysql
mkdir -p /usr/src/php/ext
#install-redis-start
curl -L -o /usr/src/php/ext/tmp.tgz http://pecl.php.net/get/redis-5.3.7.tgz
tar xf /usr/src/php/ext/tmp.tgz -C /usr/src/php/ext/
mv /usr/src/php/ext/redis-5.3.7 /usr/src/php/ext/redis
docker-php-ext-install redis
echo '<? phpinfo();'>1.php&&php 1.php|grep redis&&rm 1.php
#install-xxtea-start
curl -L -o /usr/src/php/ext/tmp.tgz http://pecl.php.net/get/xxtea-1.0.11.tgz
tar xf /usr/src/php/ext/tmp.tgz -C /usr/src/php/ext/
mv /usr/src/php/ext/xxtea-1.0.11 /usr/src/php/ext/xxtea
docker-php-ext-install xxtea
rm /usr/src/php/ext/tmp.tgz
echo '<? phpinfo();'>1.php&&php 1.php|grep xxtea&&rm 1.php
exit

 

第2步:打包镜像(复制下面所有代码到SSH控制台并按回车)

docker commit php74fpm php74fpm
docker rm php74fpm
docker image rm php:7.4-fpm
docker images
docker ps -a

docker run -it --rm php74fpm php -v

你可以用docker save php74fpm>php74fpm-image.tar导出镜像
docker load<php74fpm-image.tar导入镜像

第3步:编辑php配置文件

[global]
daemonize = no

[www]
listen = /root/php-fpm.sock
listen.mode = 0666

保存到~/docker/nginx/php-fpm.conf

mkdir -p ~/docker/nginx/
vim ~/docker/nginx/php-fpm.conf

 

第4步:启动镜像 

docker run --restart=always -d --name nginx-php -v ~/docker/nginx:/root php74fpm /bin/bash -c "cp /root/php-fpm.conf /usr/local/etc/php-fpm.d/zz-docker.conf&&php-fpm"

会生成 /docker/nginx/php-fpm.sock 文件供nginx访问

 

===========================下面介绍nginx配置==================================

 

第一步:初始化nginx配置文件

cd ~
rm -rf ~/docker/nginx/etc
mkdir -p ~/docker/nginx
docker run --rm -v ~/docker/nginx:/root docker.io/library/nginx:latest /bin/bash -c "cp -a /etc/nginx /root/etc"
rm -rf ~/docker/nginx/log
mkdir ~/docker/nginx/log
docker rm -f nginx
docker run --restart=always -dp 80:80 --name nginx -v ~/docker/nginx:/root -v ~/docker/nginx/etc:/etc/nginx -v ~/docker/nginx/log:/var/log/nginx docker.io/library/nginx:latest

 

 

第二步:配置nginx.conf

vim ~/docker/nginx/etc/conf.d/default.conf

 内容如下

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name _;
  root /root/www;
  index index.php index.html index.htm;
  location ~ \.(php|phar)(/.*)?$ {
    fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
    fastcgi_intercept_errors on;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_pass unix:/root/php-fpm.sock;
  }
}

 

第三步:重新加载nginx配置文件使其生效

docker exec nginx nginx -s reload

第四步:编写一个index.php做测试

mkdir -p ~/docker/nginx/www/
vim ~/docker/nginx/www/index.php

内容为

<?php
phpinfo();

 

posted on 2022-07-20 15:04  项希盛  阅读(1348)  评论(0)    收藏  举报