php-fpm 修改php不生效,PHP-FPM 容器内无法加载改动后的代码

环境

Docker 19.03.5

PHP-FPM 7.1.33

Deployer 6.8.0

描述

触发 CI Pipeline 后,执行 deployer 进行部署,一切顺利,目录结构如下:

.

├── current -> releases/22 # 当前运行的版本,Nginx 和 PHP 都指向该软链

├── releases

│ ├── 20

│ ├── 21

│ └── 22

└── shared

└── storage

7 directories, 0 files

21 这个文件夹上个发布的版本,22 是最新发布的版本,但是请求项目页面,显示的还是 20 里面的代码逻辑。于是我执行如下命令:

mv 21 temp

此时再去请求项目,则代码加载的是最新的 22 这个目录下的。

一开始考虑到 Docker volume 的缓存问题,所以在宿主机和容器(Nginx 和 PHP-FPM)中都进行 current 软链的信息比对,发现都是一致的,那么也就排除了是因为挂载卷导致的文件系统缓存问题。

然后我手动模拟发版的操作,执行了如下命令:

ln -nfs --relative /usr/wwwroot/internal/releases/21 /usr/wwwroot/internal/release # 创建最新版本的软链接,用于安装依赖

mv -T /usr/wwwroot/internal/release /usr/wwwroot/internal/current # 将安装好的项目软链修改为当前版本

按理来说此时加载的应该是上一版本的代码,但是实际请求发现代码逻辑是 22 那个目录下的。这次我重启了 PHP-FPM 的容器,发现又正常回滚到 21 的代码了。那么问题就存在 PHP-FPM 容器中。

然后按照网上的方法,禁用了 Opcache 以及清理了 realpath_cache,重启 PHP-FPM,再次将 current 软链到 releases/20 这个目录,发现依旧不能生效。

我能想象到的可能产生缓存的地方就这些了,各位有遇到过类似问题的吗?还请赐教,不胜感激!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值