专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

widepath/phpfpm Docker 镜像 - 轩辕镜像 | Docker 镜像高效稳定拉取服务

热门搜索:openclaw🔥nginx🔥redis🔥mysqlopenjdkcursorweb2apimemgraphzabbixetcdubuntucorednsjdk
phpfpm
widepath/phpfpm
widepath
airwp的PHP容器,包含phpfpm、caddy-phpnode等组件,用于处理PHP请求、运行Web应用及相关服务,支持开发和生产环境部署。
下载次数: 0状态:社区镜像维护者:widepath仓库类型:镜像最近更新:1 年前
轩辕镜像,加速的不只是镜像。点击查看
中文简介版本下载
轩辕镜像,加速的不只是镜像。点击查看

airwp Docker镜像文档

镜像概述

airwp Docker镜像包含多个容器组件,用于构建和运行WidePath Web应用生态系统。该镜像提供了完整的应用服务架构,包括Web应用、代理服务、PHP处理节点、后台任务处理、日志收集等核心功能,支持开发环境搭建与生产环境部署。

核心功能和特性

App Containers & Deployments
  • app: WidePath Web应用主容器,处理用户注册、站点创建/删除等核心业务逻辑
  • caddy-proxy: 代理服务,直接转发请求至app和php节点
  • nodesftpd: 多节点SFTP服务器
  • worker: 后台任务处理容器,通过工作队列执行站点创建/删除、备份、密码重置等任务
  • vector: 日志收集工具,将事件数据发送至logtail
Phpnode Containers
  • caddy-phpnode: PHP节点本地HTTP服务器,将请求转发至特定phpfpm实例
  • phpfpm: PHP-FPM守护进程容器,处理PHP请求
  • purger: PHP节点守护进程,将清除请求转发至CDN(因StackPath停用已弃用)
  • smtp-relay: SMTP中继守护进程,管理每个站点的出站邮件配额
  • vector: 日志收集工具,将事件数据发送至logtail
其他组件
  • app-cli: 命令行工具,用于控制Web应用
  • deploy: 开发/生产环境部署工具、脚本和方案
  • purger-plugin: WordPress插件,在站点编辑时向purger发送缓存失效请求

使用场景

  • WidePath Web应用的开发环境搭建
  • 生产环境中PHP节点的部署与管理
  • 多节点SFTP服务部署
  • 后台任务处理与日志收集
  • 站点数据迁移与备份恢复

使用方法和配置说明

在Mac上使用Canonical Multipass搭建Ubuntu开发节点
  1. 安装Multipass:

    bash
    brew install multipass
    
  2. 启动Docker虚拟机:

    bash
    multipass launch docker --name=docker
    multipass exec docker -- sudo bash
    
  3. 配置Docker服务:

    bash
    systemctl edit docker
    

    在编辑器中添加:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
    
  4. 重启Docker并登录:

    bash
    systemctl restart docker
    docker login
    
  5. 拉取镜像并创建网络:

    bash
    docker pull widepath/phpfpm:release-0.0.98
    docker network create widepath_localbackend
    
  6. 安装依赖并启动数据库:

    bash
    apt install s3cmd zip
    docker run -d --name=mysql -e MYSQL_ROOT_PASSWORD=root --network widepath_localbackend -p 3306:3306 mariadb:10.4
    
  7. 启动worker服务:

    bash
    ansible_user=root ansible_pass= MYSQL_ROOT_PASSWORD=root ansible_port=22 WP_UID_FILES=1001 WP_GID_FILES=1001 nodemon
    
  8. 将节点IP添加至Mongo的nodes集合

开发模式配置
  1. 暴露Docker API:

    bash
    docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
    
  2. 运行SSH容器模拟PHP节点文件系统:

    bash
    docker run -d -p 2222:22 rastasheep/ubuntu-sshd
    
  3. 安装sshpass以支持密码SSH连接:

    bash
    apt install sshpass
    
生产环境脚本运行方法
  1. 本地端口转发Mongo:

    bash
    kubectl port-forward <mongo-pod> 27017:27017
    
  2. 启动portal-meteor应用:

    bash
    meteor run
    
  3. 在另一个终端启动meteor shell:

    bash
    meteor shell
    
  4. 加载并运行脚本:

    bash
    .load <脚本物理路径>
    

    输出将显示在portal-meteor应用终端

构建DigitalOcean镜像
bash
docker build --platform=linux/amd64 -t <镜像名称>:<版本> .

必须添加--platform=linux/amd64参数

密钥管理
worker-ansible-phpnode.key
  • 生成RSA私钥:
    bash
    ssh-keygen -m PEM -t rsa -f worker-ansible-phpnode.key
    
  • 使用Ansible在所有php节点上安装公钥
  • 在Kubernetes中添加为密钥:
    bash
    kubectl create secret generic worker-ansible-phpnode --from-file=worker-ansible-phpnode.key
    
  • 在worker容器中挂载该密钥
其他密钥
  • app节点生成私钥并在php节点授权,供sftpd容器SSH连接php节点
  • computation节点生成私钥并在php节点授权,供worker容器通过Ansible执行备份等操作
  • 将SSH密钥复制到堡垒机~/.ssh/id_rsa
密钥配置文件
  • ./deploy/kube/secret-nodesftpd-phpnodes.yml: nodesftpd与php节点通信密钥
  • ./deploy/kube/secret-worker-ansible-phpnodes.yml: worker与php节点通信密钥
复制regcred密钥到kube-logging命名空间
bash
kubectl get secret regcred --namespace=default -o yaml | grep -v '^\s*namespace:\s' | kubectl apply --namespace=kube-logging -f -
Mongo数据库操作
备份
bash
mongodump --db=dbname --gzip --archive=wp.gz
恢复
bash
mongorestore --gzip --archive=wp.gz
DigitalOcean节点管理
基础设置
  • 手动创建堡垒机并安装SSH私钥到~/.ssh/id_rsa
  • 设置环境变量:
    bash
    export DO_API_TOKEN=<你的API令牌>
    
  • 创建必要标签:
    bash
    doctl compute tag create phpnode
    
  • 使用静态inventory启动基础实例:
    bash
    ansible-playbook -i launch-inventory launch.yml
    
新增PHP节点
  1. 设置API令牌:

    bash
    export DO_AUTH_TOKEN=abc123
    
  2. 进入Ansible目录:

    bash
    cd ./deploy/ansible
    
  3. 在./deploy/ansible/phpnode-provision/launch-inventory-php添加新节点

  4. 创建节点:

    bash
    ansible-playbook -i phpnode-provision/launch-inventory-php phpnode-provision/launch-php.yml
    
  5. 部署所需包和配置:

    bash
    ansible-playbook phpnode-provision/droplet-basics.yml --limit "phpXX"
    ansible-playbook phpnode-provision/docker.yml --limit "phpXX"
    ansible-playbook phpnode-provision/php.yml --limit "phpXX"
    ansible-playbook phpnode-provision/php-packages-outside-docker.yml --limit "phpXX"
    ansible-playbook phpnode-provision/python.yml --limit "phpXX"
    ansible-playbook phpnode-provision/reinstall-docker-sdk.yml --limit "phpXX"
    ansible-playbook phpnode-provision/block-storage.yml --limit "phpXX"
    
  6. 安装密钥到新节点:

    bash
    ssh-keygen -y -f worker-ansible-phpnode.key > worker-ansible-phpnode.pub
    ansible-playbook phpnode-provision/keys.yml --limit "phpXX"
    
  7. 创建phpnode服务:

    bash
    ansible-playbook phpnode-service/caddy-phpnode.yml --limit "phpXX"
    ansible-playbook phpnode-service/vector/vector-phpnode.yml --limit "phpXX"
    ansible-playbook phpnode-service/mysql.yml --limit "phpXX"
    ansible-playbook phpnode-service/purger.yml --limit "phpXX"
    ansible-playbook phpnode-service/smtp-relay.yml --limit "phpXX"
    
  8. 在app中添加节点:

    bash
    node app-cli/app-cli node add phpXX <private_ip> "websitesca" "docker-standalone"
    
  9. 在Cloudflare添加DNS记录:

    A phpXX.tor1.airwp.com >> public_ip
    
节点迁移
  1. 定义源节点和目标节点:

    bash
    src=phpX1
    dst=phpX2
    
  2. 导出数据库:

    bash
    candidates=$(echo "show databases" | mysql -u root -p -h $src | grep -Ev "^(Database|mysql|performance_schema|information_schema)$")
    mysqldump --databases $candidates -u root -p -h $src > all.sql
    
  3. 导出权限:

    bash
    MYSQL_CONN="-uroot -p -h $src"
    mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A | sed 's/$/;/g' > grants.sql
    
  4. 编辑grants.sql移除无关内容

  5. 导入数据库和权限到目标节点:

    bash
    mysql -u root -p -h $dst < all.sql
    mysql -u root -p -h $dst < grants.sql
    
  6. 同步站点文件:

    bash
    rsync -chavzP --stats $src:/mnt/airwp/sites/ ./sites
    rmdir sites/_trash
    rsync -chavzP --stats ./sites/* $dst:/mnt/airwp/sites
    
  7. 更新站点节点信息:

    bash
    app-cli site list --nodename=$src | jq "[.[].siteStub]" > ~/Desktop/nodes/$src.json
    cat ~/Desktop/nodes/$src.json | python deploy/script/node-change-all.js $dst
    
  8. 权限修复:

    bash
    chown -R wp:wp *
    find . -type f -exec chmod 644 {} \;
    find . -type d -exec chmod 755 {} \;
    find . -regex '.*.archive.zip' -exec rm {} \;
    
Ansible配置
  1. 创建配置文件:

    • ~/.ansible/airwp.cfg (从./deploy/ansible.cfg.sample复制)
    • ~/.ansible/airwp-ssh.cfg (从./deploy/ssh.cfg.sample复制)
  2. 设置环境变量:

    bash
    export ANSIBLE_CONFIG=~/.ansible/airwp.cfg
    
  3. 确保inventory可用(需设置DO_API_TOKEN环境变量)

NODESFTPD配置
密钥生成与认证

生成适用于ssh2模块的密钥:

bash
ssh-keygen -m PEM -t rsa -f /path/to/wp_key

将生成私钥(/path/to/wp_key)和公钥(/path/to/wp_key.pub)

  • 生产环境: 在app节点生成密钥并在php节点授权
  • 开发环境: 授权main节点密钥到php1节点
常用操作
wpcli命令
  • 添加Formidable Pro API密钥:

    bash
    wp option add frmpro-credentials 'a:1:{s:7:\"license\";s:23:\"BDN68-YZF5W-GZHKY-YOJJL\";}'
    
  • 添加Akismet API密钥:

    bash
    wp option add wordpress_api_key 92f0f8e7bee3
    
  • 重置角色并设置管理员:

    bash
    wp role reset --all
    wp user set-role websitesca administrator
    wp user update websitesca --nickname=websitesca
    
  • 卸载默认插件和主题:

    bash
    sudo -u \#$WP_UID_FILES wp plugin uninstall hello
    sudo -u \#$WP_UID_FILES wp theme uninstall twentyfifteen twentysixteen
    
容器内存使用查询
bash
kubectl exec -it app-d86fcdd6c-lwp9d cat /sys/fs/cgroup/memory/memory.usage_in_bytes
清理挂起的备份
bash
# 列出所有挂起的备份
db.sites.find({backups:{$elemMatch:{'status.pending':true}}}).map(x=>x.siteStub)

# 删除所有挂起的备份
db.sites.update({}, {$pull:{backups:{'status.pending':true}}}, {multi:true})
直接访问源服务器
  • 使用httpie:

    bash
    http --headers [***] Host:<sitestub>.widepath.app X-OriginalHost:<hostname> X-SiteStub:<sitestub> --verify=no
    
  • 使用curl:

    bash
    curl -I [***] -H "X-OriginalHost: <host>" -H "X-SiteStub: <sitestub>" -H "Host: <sitestub>.widepath.app" -k
    
查看更多 phpfpm 相关镜像 →
mailcow/phpfpm logo
mailcow/phpfpm
mailcow
mailcow是基于Docker的开源邮件服务器套件,集成SMTP/IMAP/POP3/Webmail等完整功能,支持反垃圾邮件与加密,适用于快速部署安全可靠的邮件服务。
5 次收藏1000万+ 次下载
1 年前更新
adhocore/phpfpm logo
adhocore/phpfpm
adhocore
基于Alpine的轻量级Docker PHP FPM镜像,下载大小约150MB,包含PHP8.0/7.4及78+常用扩展,预装Composer v1和v2,适合生产环境和开发使用。
9 次收藏10万+ 次下载
1 年前更新
iwfwebsolutions/phpfpm logo
iwfwebsolutions/phpfpm
iwfwebsolutions
Web Solutions基础PHP-FPM镜像,包含最常用模块及高级启动脚本和工具,适用于构建自定义PHP Docker环境。
5万+ 次下载
13 天前更新

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

docker search 报错:专属域名下仅支持 Docker Hub 查询

docker search 报错问题

网页搜不到镜像:Docker Hub 有但轩辕镜像搜索无结果

镜像搜索不到

离线传输镜像:无法直连时用 docker save/load 迁移

离线传输镜像

Docker 插件安装错误:application/vnd.docker.plugin.v1+json

Docker 插件安装错误

WSL 下 Docker 拉取慢:网络与挂载目录影响及优化

WSL 拉取镜像慢

轩辕镜像是否安全?镜像完整性校验(digest)说明

镜像安全性

如何用轩辕镜像拉取镜像?登录方式与专属域名配置

如何拉取镜像

错误码与失败问题

manifest unknown 错误:镜像不存在或标签错误

manifest unknown 错误

TLS/SSL 证书验证失败:Docker pull 时 HTTPS 证书错误

TLS 证书验证失败

DNS 解析超时:无法解析镜像仓库地址或连接超时

DNS 解析超时

410 Gone 错误:Docker 版本过低导致协议不兼容

410 错误:版本过低

402 Payment Required 错误:流量耗尽错误提示

402 错误:流量耗尽

401 UNAUTHORIZED 错误:身份认证失败或登录信息错误

身份认证失败错误

429 Too Many Requests 错误:请求频率超出专业版限制

429 限流错误

Docker login 凭证保存错误:Cannot autolaunch D-Bus(不影响登录)

凭证保存错误

账号 / 计费 / 权限

免费版与专业版区别:功能、限额与使用场景对比

免费版与专业版区别

支持的镜像仓库:Docker Hub、GCR、GHCR、K8s 等列表

轩辕镜像支持的镜像仓库

拉取失败是否扣流量?计费规则说明

拉取失败流量计费

KYSEC 权限不够:麒麟 V10/统信 UOS 下脚本执行被拦截

KYSEC 权限错误

如何申请开具发票?(增值税普票/专票)

开具发票

如何修改网站与仓库登录密码?

修改网站和仓库密码

配置与原理类

registry-mirrors 未生效:仍访问官方仓库或报错的原因

registry-mirrors 未生效

如何去掉镜像名称中的轩辕域名前缀?(docker tag)

去掉域名前缀

如何拉取指定架构镜像?(ARM64/AMD64 等多架构)

拉取指定架构镜像

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
widepath/phpfpm
博客公告Docker 镜像公告与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.