73.docker中nginx+php

发表于 linux 分类,标签:
备注:提示file not find是因为要把php的index.php写入到php容器的/usr/share/nginx/www目录,而不是nginx里面。
补充:主要注意两点,nginx配置文件指向,fastcgi_pass端口指向确定没问题就能同时解析php+html,然后重新加载配置文件service nginx reload。
使用docker快速搭建nginx+php环境
测试环境:centos7.6,docker 18.09.1
1.首先要确保docker环境已经安装成功
[root@localhost ~]# docker --version
Docker version 18.09.2, build 6247962
2.docker安装nginx
[root@localhost ~]# docker pull nginx
[root@localhost ~]# docker images
docker run --detach \        --name mynginx \        -p 443:443\        -p 80:80 \        -v E:/Docker/nginx/www:/usr/share/nginx/html:rw\        -v E:/Docker/nginx/logs:/var/log/nginx/:rw\        -v E:/Docker/nginx/ssl:/ssl/:rw\        -d nginx
3218b3ad4e47018729b053ad834cf2665cf3af497b4a2ccccd758f792179e365
[root@localhost ~]#
-p 80:80:将容器的80端口映射到主机的80端口
-d 后台运行(守护进程)
–name mynginx:将容器命名为mynginx
-v 将主机中当前目录下的www挂载到容器的www目录
查看容器启动情况
[root@localhost ~]# docker ps -a
3.docker安装php
[root@localhost ~]# docker pull php:7.4-fpm
[root@localhost ~]# docker images
4.使用php镜像开启php-frm应用容器
[root@localhost ~]# docker run -p 9000:9000 -d --name myphp-fpm -v E:/Docker/nginx/www:/usr/share/nginx/www php:7.4-fpm
注意:/home/nginx/data:/usr/share/nginx/www   容器和宿主的目录位置
[root@localhost ~]#
-p 9000:9000 :将容器的9000端口映射到主机的9000端口
-d 后台运行(守护进程)
–name myphp-fpm:将容器命名为myphp-fpm
-v 将主机中当前目录下的www挂载到容器的www目录
5.查看容器启动情况
[root@localhost ~]# docker ps -a
6.查看ip信息
[root@localhost ~]# docker inspect myphp-fpm | grep "IPAddress"
“SecondaryIPAddresses”: null,
“IPAddress”: “172.17.0.3”,
“IPAddress”: “172.17.0.3”,
7.修改nginx相关配置
容器里面是没有vim,不能直接修改配置文件。当然我们也可以在容器里面安装vim,这里介绍另一种方法
进入正在运行的nginx容器
[root@localhost ~]# docker exec -it mynginx bash
root@3218b3ad4e47:/#
配置文件地址 /etc/nginx/conf.d/default.conf
root@3218b3ad4e47:/# cd /etc/nginx/conf.d/
root@3218b3ad4e47:/etc/nginx/conf.d# ls
default.conf
root@3218b3ad4e47:/etc/nginx/conf.d#
然后使用ctrl + p + q退出容器,使用exit的话会让容器停止
使用专用的复制命令将配置文件复制到宿主机,然后在宿主机进行编辑
[root@localhost docker]#
docker cp mynginx:/etc/nginx/conf.d/default.conf /home/nginx/config/conf.d/default.conf docker cp mynginx:/etc/nginx/nginx.conf /home/nginx/config/nginx.conf
在宿主机修改配置文件的php部分,内容如下:
location ~ .php$ { fastcgi_pass 172.17.0.3:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; include fastcgi_params; }
备注:注意容器的IP172.17.0.3是否正确,配置的/usr/share/nginx/www 是PHP环境里面的路径
其中的ip也可以修改为宿主机的ip或者上面docker命令查看的ip
然后使用复制命令将宿主机的文件复制到容器
[root@localhost docker]# docker cp ./default.conf mynginx:/etc/nginx/conf.d/default.conf
8.进入容器中,重新载入nginx配置文件
[root@localhost docker]# docker exec -it mynginx bash
root@3218b3ad4e47:/# service nginx reload
[ ok ] Reloading nginx: nginx.
root@3218b3ad4e47:/#
9.然后我们测试一下

[root@localhost www]# vim index.php

<?php phpinfo(); ?>

访问成功
10.上面这个修改后的镜像已经上传至 Docker Hub,可以省略修改配置文件这一步,使用方法
[root@localhost ~]# docker pull codehi/nginx:v1
[root@localhost ~]# docker pull codehi/php:7.1-fpm
这里推荐一款集成环境dnmp,我也使用过还不错,安装方便,功能齐全。

0 篇评论

发表我的评论