使用Docker部署PHP环境 您所在的位置:网站首页 docker怎么制作容器 使用Docker部署PHP环境

使用Docker部署PHP环境

#使用Docker部署PHP环境| 来源: 网络整理| 查看: 265

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」

前面两章介绍了安装Docker和部署Nginx环境。

今天说一下使用Docker部署PHP环境。

拉取PHP镜像

首先可以通过 docker search php 查看PHP的镜像列表

Snipaste_2021-11-13_00-21-59.png

然后使用 docker pull php:7.4-fpm 获取PHP镜像,后面的数字可以指定PHP的版本,我安装的是PHP7.4,如果需要获取其他版本,可以通过dockerhub查询

可以通过 docker images 查看安装的镜像列表,或者通过 docker images php 查看php的信息。

Snipaste_2021-11-13_00-27-52.png

上图中的 IMAGE ID 是一个重要的信息,这个是全局唯一的,由于位数太多,我们可以通过使用前几位来代表PHP这个镜像。比如 “80bf”,下面我们会使用到。

创建容器

现在我们需要创建PHP的容器,并且启动PHP。

docker run --name php-test -v /usr/local/nginx/html:/www -p 9000:9000 -d 80bf

命令解释

docker run : 是创建一个新容器并运行一个命令 --name : 给容器起一个名字,指的是 php-test -p : 指定宿主机与容器内部端口的映射关系,-p [宿主机端口]:[容器内部端口],我设置的是 9000:9000 -d : 设置容器在在后台一直运行 最后面的 PHP 是镜像名称,也可以是镜像ID,例如上面提到的 “80bf”

Snipaste_2021-11-13_00-33-57.png

启动PHP后,返回的名称为php-test的容器唯一ID。

可以通过 docker ps 查看Docker 创建的容器

Snipaste_2021-11-13_00-34-18.png

需要注意的是,如果使用的是云服务器,需要在安全组的规则中,打开上面设置的端口号,不然是访问不了的。比如PHP使用的9000端口号。

通过Nginx访问PHP PHP配置

首先我们需要把PHP容器内的存放文件的目录挂载到宿主机中。避免重复进入PHP容器内更改。

需要先停止PHP容器,然后删除,再重新创建一个容器。

docker stop php-test

docker rm php-tet

docker run --name php-test -v /usr/local/nginx/html:/www -p 9000:9000 -d 80bf

-v:  挂载目录, 此处 /usr/local/nginx/html目录为宿主机存放文件目录,/www为PHP容器内存放文件目录。 Nginx配置

我们在讲解使用Docker安装Nginx时,已经把容器内的相关Nginx配置文件挂载到了宿主机内。

由于Nginx的默认配置文件 /etc/nginx/conf.d/default.conf 中存放默认页面的目录是 /usr/share/nginx/html, 由于再PHP容器内,存放文件的目录为/www,所以Nginx存放文件的目录也需要和PHP一致。

创建Nginx的容器命令

docker run --name nginx-test -p 80:80 \ -v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/nginx/logs:/var/log/nginx \ -v /usr/local/nginx/html:/www \ -v /usr/local/nginx/conf:/etc/nginx/conf.d \ --privileged=true --link php-test:php -d 0466 --link:  把 php-test 容器的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

通过上面操作,PHP和Nginx容器存放文件的目录/www,都挂载到了宿主机/usr/local/nginx/html目录下。这是为了避免相同文件修改多次。

注意:PHP和Nginx容器存放文件的目录必须一致,才能访问,不然会找不到文件。

配置属于PHP容器的虚拟主机

从上面创建Nginx容器的命令可以看到,我们把Nginx容器存放虚拟主机的目录/etc/nginx/conf.d映射到了宿主机/usr/local/nginx/conf上,我们先把已经存在的default.conf文件删除或者更改名称的后缀不能为conf。

新建文件 mkdir php-web.conf

server { listen 80; server_name localhost; location / { root /www; index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /www; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; include fastcgi_params; } }

Snipaste_2021-11-13_01-09-20.png

root /www 就是Nginx容器中存放文件的目录。

fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name 中 /www是PHP容器中存放文件的目录。

但是Nginx和PHP容器中的目录必须一致。

准备工作做好了,接下来我们新建一个访问的PHP文件。

mkdir index.php



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有