如何在Docker容器内运行存储在Synology群晖上的PHP脚本?
Domoticz Docker容器调用群晖宿主机PHP脚本解决方案
方案1:目录挂载(推荐,配置最简单)
Docker默认与宿主机文件系统隔离,你只要把群晖上存放PHP脚本的目录映射到Domoticz容器内部,再给容器装PHP运行环境即可正常调用,步骤如下:
- 停止当前运行的Domoticz容器,进入群晖Docker套件的容器编辑页面
- 找到「存储空间」配置栏,新增挂载记录:
- 宿主机路径:选择你存放PHP脚本的群晖本地目录,例如
/volume1/home/domoticz_php/ - 装载路径:自定义容器内的访问路径,例如
/php_scripts/ - 权限根据需求勾选,脚本不需要修改的话选「只读」即可
- 宿主机路径:选择你存放PHP脚本的群晖本地目录,例如
- 进入容器终端,根据镜像的基础系统安装PHP CLI:
如果你用的是Debian/Ubuntu系基础镜像,执行:apt update && apt install php-cli -y - 后续Domoticz触发脚本的命令直接写容器内的路径即可,示例:
php /php_scripts/xxx.php
方案2:SSH远程调用宿主机执行(适合不想修改容器挂载配置的场景)
如果你不愿意调整容器挂载,也不想在容器内装PHP,可通过SSH协议远程调用群晖宿主机的PHP环境执行脚本:
- 先在群晖控制面板「终端机和SNMP」中开启SSH功能,记录宿主机的局域网IP
- 进入Domoticz容器终端安装SSH客户端:
apt update && apt install openssh-client -y - 容器内执行
ssh-keygen一路回车生成SSH密钥,把生成的公钥内容追加到群晖宿主机的/root/.ssh/authorized_keys文件中,配置免密登录 - 后续Domoticz触发脚本的命令示例:
ssh root@<群晖局域网IP> "php /volume1/home/domoticz_php/xxx.php"
注意事项
- 两种方案都需要确认执行用户对PHP脚本、对应目录有足够的读取/执行权限
- 若你使用的Domoticz镜像已经预装PHP环境,可跳过安装PHP的步骤
- 测试阶段可以先进入容器终端手动执行命令验证调用效果,再配置到Domoticz的触发规则中
内容的提问来源于stack exchange,提问作者vespino
相关产品推荐
相关产品推荐

