博主
258
258
258
258
专辑

第十七节 Docker部署PHP网站环境

亮子 2022-01-21 09:55:39 7352 0 0 0

1、准备目录

# html以及php文件目录
mkdir -p /server/dede/www

# 日志目录
mkdir -p /server/dede/logs

# 配置文件目录
mkdir -p /server/dede/conf

# 创建自定义配置文件目录
mkdir -p /server/dede/conf/conf.d

2、准备测试文件

在/server/dede/www目录下创建index.php文件。

内容如下:

<?php
echo phpinfo();
?>

3、运行php容器

docker run --name  myphp7 -v /server/dede/www:/www  -d php:7.1.30-fpm

4、准备nginx配置文件

在/server/dede/conf/conf.d目录下创建test-php.conf文件,内容如下:

server {
    listen       80;
    server_name  www.51souyun.com;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

配置文件说明:

  • php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。

  • /www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 /server/dede/www 目录。

5、运行 nginx 容器

docker run --name php-nginx -p 9022:80 -d \
-v /server/dede/www:/usr/share/nginx/html:ro \
-v /server/dede/conf/conf.d:/etc/nginx/conf.d:ro \
--link myphp7:php \
nginx

参数说明:

  • -p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
  • /server/dede/www: 是本地 html 文件的存储目录
  • /usr/share/nginx/html 是容器内 html 文件的存储目录。
  • /server/dede/conf/conf.d: 是本地 nginx 配置文件的存储目录
  • /etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
  • --link myphp7:php: 把 myphp7 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

6、测试环境

在浏览器输入 http://www.51souyun.com:9022/ 显示如下页面:

nginx+php

7、其他版本的安装

# 安装php
docker run --name myphp5 -v /server/dede/www:/www  -d php:5.6-fpm

# 安装nginx
docker run --name php5nginx -p 9022:80 -v /server/dede/www:/usr/share/nginx/html -v /server/dede/conf/conf.d:/etc/nginx/conf.d --link myphp5:php -d nginx

8、安装php扩展

(1)、首先进入docker中 php 容器中

docker exec -it  myphp5 bash (myphp5 为容器名)

图片alt

(2)、进入容器中docker 安装扩展的目录下

docker-php-ext-install 为安装扩展

cd /usr/local/bin/

(3)、安装mysql扩展

./docker-php-ext-install mysql

./docker-php-ext-install mysqli

打开php.ini 中打开:

图片alt

然后重启php容器。

(4)、安装gd扩展

#进入PHP容器
#更新软件源
apt update

#安装各种库
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev

#解压源码
docker-php-source extract

# 进入gd源码文件夹
cd /usr/src/php/ext/gd

#准备编译
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2

#编译安装
docker-php-ext-install gd

#查看是否成功安装gd扩展
php -m | grep gd

#重启容器

php的docker容器中重要的两个目录:

# php.ini的存放目录
/usr/local/etc/php

# docker-php-ext-install的存放目录
/usr/local/bin