Alibaba Cloud Linux 3 +Docker 部署 ThinkPHP6 (宝塔环境)-问题篇

上篇文章介绍了具体的操作步骤,这里总结记录一下部署过程中遇到的问题:

这里注明一下,所有操作容器的命令要在项目目录(tp6)下运行,目录结构如下图:

宿主机(安装宝塔面板)

├─ /www/wwwroot/tp6 (项目目录)

├─app

├─config

├─public

├─vender

... ...

├─think

├─Dockerfile

├─docker-composer.yml

一、Nginx 报 "502 Bad Gateway"

步骤1:检查 PHP-FPM 是否正常运行并监听 9003 端口

首先需要找到运行 PHP-FPM 的容器,并确认其内部端口:

执行命令:

#列出所有运行中的容器

root@iZ2ze8he63z0zt6g8kiae2Z tp6\]# docker ps

#输出结果

bash 复制代码
CONTAINER ID   IMAGE                       COMMAND                  CREATED       STATUS       PORTS                                                 NAMES
7205b7c455d3   tp6-tp6-php-fpm             "docker-php-entrypoi..."   7 hours ago   Up 7 hours   9000/tcp, 0.0.0.0:9003->9003/tcp, :::9003->9003/tcp   tp6-tp6-php-fpm-1

关键信息:

  • 容器名称(如tp6-tp6-php-fpm-1

  • 端口映射(如9003:9000表示宿主机 9003 映射到容器内 9000 端口)

步骤 2:检查容器内 PHP-FPM 是否监听正确端口

进入容器内部,确认 PHP-FPM 实际监听的端口(通常是 9000,而非宿主机的 9003):

bash 复制代码
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash

# 在容器内执行,检查PHP-FPM监听端口
root@7205b7c455d3:/var/www/html# netstat -tlnp | grep php-fpm

运行结果:

bash 复制代码
tcp6       0      0 :::9000                 :::*                    LISTEN      1/php-fpm: master p 

根据运行结果,就可以确定Docker内部实际监听的端口是9000

在我们的Docker中,有一段代码如下图红框中部分就是用来修改 PHP-FPM 的监听端口,从默认的 9000 端口改为 9003 端口。

  • s/listen = 9000/listen = 9003/ 是替换规则,意思是将所有 "listen = 9000" 字符串替换为 "listen = 9003" ,这里是完全匹配的原则。

再看看容器内的www.conf中的内容,

bash 复制代码
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash


//编辑www.conf文件
root@7205b7c455d3:/usr/local/etc/php-fpm.d# vim /usr/local/etc/php-fpm.d/www.conf

如下图:

这里可以看到文件 中是 listen = 127.0.0.1:9000,按照匹配规则,肯定是修改不掉这部分的,所以,我们先临时修改一下(即:进入www.conf文件,修改内容 为 listen = 9003 保存退出)

ctrl + PQ键退出容器

bash 复制代码
# 重启容器(会自动加载修改后的配置)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker restart tp6-tp6-php-fpm-1

等待5秒,再次进入容器,检查PHP-FPM监听的端口

bash 复制代码
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash

# 在容器内执行,检查PHP-FPM监听端口
root@7205b7c455d3:/var/www/html# netstat -tlnp | grep php-fpm

运行结果:

还是9000,可能存在多个配置文件:

bash 复制代码
#容器内直接搜索配置文件中的 listen 配置,查看都有哪些配置文件监听了9000端口
grep -r "listen = " /usr/local/etc/php-fpm.d/

运行结果:

这里看到以.conf结尾的文件有两个一个www.conf,一个是zz-docker.conf,zz-docker.conf文件中监听了9000端口,我们把这个也修改一下试试。

bash 复制代码
#修改配置文件listen = 9000 为 listen = 9003
vim /usr/local/etc/php-fpm.d/zz-docker.conf

退出容器,重启容器

ctrl + PQ键退出容器

#重启容器

docker restart tp6-tp6-php-fpm-1

等待5秒,再次进入容器,检查PHP-FPM监听的端口

bash 复制代码
​
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash

# 在容器内执行,检查PHP-FPM监听端口
root@7205b7c455d3:/var/www/html# netstat -tlnp | grep php-fpm

​

运行结果如下图:

监听接口正确了,我们再尝试打开网址,这时候显示404错误。

十月一了,放假休息,放假回来我再补充404错误的解决步骤!

相关推荐
jockerzoo@3 分钟前
IP 定向灰度发布:ArgoCD + GitLab CLI 方案
运维
乾元4 分钟前
红队 / 蓝队:用 AI 自动生成攻击场景并评估防御效果——从“安全演练”到“可计算的网络对抗系统”
运维·网络·人工智能·网络协议·安全·web安全·架构
半路_出家ren6 分钟前
Python操作MySQL(详细版)
运维·开发语言·数据库·python·mysql·网络安全·wireshark
lbb 小魔仙6 分钟前
eBPF+Linux 6.18:云原生环境下的安全监控与故障排查实战
linux·运维·云原生
Wzx1980127 分钟前
go聊天室项目docker部署
运维·docker·容器
2301_767902643 小时前
Zabbix
运维·zabbix
weixin_46688 小时前
K8S-特殊容器
云原生·容器·kubernetes
半夏知半秋9 小时前
docker常用指令整理
运维·笔记·后端·学习·docker·容器
逆风水手9 小时前
Ansible自动化运维入门指南
linux·运维·自动化·ansible
tianyuanwo9 小时前
SSH会话管理实战:识别与清理非法连接的完整指南
运维·ssh