Docker部署php+nginx环境
因公司要使用Dzzoffice、需要用到php+nginx+mysql的环境,所以先用docker搭一套环境测试一下Dzzoffice。mysql测试服务器布的太多了,在这里直接复用了,就不再文章里写了。
一、安装nginx
1、docker 仓库寻找镜像
docker search ngxin
[root@node2 ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 18491 [OK]
unit Official build of NGINX Unit: Universal Web … 0 [OK]
bitnami/nginx Bitnami nginx Docker Image 162 [OK]
bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 25 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 89
kasmweb/nginx An Nginx image based off nginx:alpine and in… 6
rancher/nginx-ingress-controller 11
rancher/nginx-ingress-controller-defaultbackend 2
bitnami/nginx-exporter 3
rancher/nginx 2
rapidfort/nginx-ib RapidFort optimized, hardened image for NGIN… 0
... ...
不重要就是看一眼
2、拉取nginx镜像
docker pull nginx
默认拉取latest版本
也可以拉取指定版本
docker pull nginx:1.20
3、为ngxin挂载做准备
创建目录,为nginx容器挂载用
mkdir -p /usr/local/docker/nginx/logs
mkdir -p /usr/local/docker/nginx/html
mkdir -p /usr/local/docker/nginx/conf/conf.d
创建一个nginx容器
docker run --name nginx -p 8080:80 -d nginx
页面访问本地IP+80端口访问到index.html(我对页面进行了修改)表示nginx运行没问题
把ngixn容器内自己需要的文件复制到宿主机
这里我需要,nginx的配置文件
#配置
docker cp nginx:/etc/nginx/conf.d/default.conf /docker/nginx/conf/conf.d/default.conf
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf/nginx.conf
然后就可以停止并删除当前nginx容器了
docker stop nginx
docker rm nginx
4、启动正式用的nginx容器
docker run --name nginx -p 80:80 \
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/logs:/var/nginx/logs \
-v /docker/nginx/html:/usr/share/nginx/html -d nginx
然后自己验证nginx是否启动成功
二、Docker安装php
1、docker拉取php镜像
docker pull php:7.3-fpm
2、启动php容器
这里挂载的目录要和nginx的一样
docker run -p 9000:9000 --name php -v /usr/local/docker/nginx/html:/usr/share/nginx/html -d php:7.3-fpm
三、配置nginx文件
要想可以通过ngxin访问php项目要进行nginx配置的修改
修改后重启nginx容器生效
配置如下:
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location ~ \.php$ {
#php项目的目录
root /usr/share/nginx/html;
#php-fpm的容器ID+监听的端口,默认9000
fastcgi_pass 172.17.0.3:9000;
fastcgi_index index.php;
# 设置脚本文件请求的路径 使用觉得路径
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
# 设置脚本文件请求的路径 使用变量
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
# 引入fastcgi的配置文件
include fastcgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
四、测试
# 进入宿主机php项目的挂载目录
cd /docker/nginx/html
# 编辑phpinfo页面
vim index.php
<?php phpinfo(); ?>
前台页面访问 主机IP+监听端口/index.php
看到如上页面即成功,可以去部署我的Dzzoffice啦。
Dzzoffice看下篇文章。