用 Laradock 在 Docker 中运行 Pydio 8:为遗留 PHP 文件共享平台搭建 NGINX + PHP-FPM + MySQL 环境
2026/9/23 16:00:06 网站建设 项目流程
  • 后端
  • 开发工具
  • DevOps

【免费下载链接】laradock

Full PHP development environment for Docker. Run Laravel, Symfony, CodeIgniter, Phalcon, WordPress, Drupal, Magento, Moodle, or any PHP project with 70+ pre-configured services: Nginx, Apache, PHP-FPM, MySQL, PostgreSQL, MongoDB, Redis, Elasticsearch & more.

项目地址:https://gitcode.com/gh_mirrors/la/laradock
点击查看免费下载

本文以 Laradock 为工具,完整演示如何将Pydio 8(前身 AjaXplorer 的 PHP 遗产版本)容器化运行:从克隆仓库、启动nginx mysql workspace三个服务,到在workspace容器中放置代码、通过浏览器安装向导把数据库指向 MySQL 容器,再到随时切换 PHP 版本与将同一套栈推向生产。读完你将掌握一套不污染宿主机、可反复重建、可并排承载多个旧版 PHP 项目的完整实战流程。

Pydio 是什么:从 AjaXplorer 到 Pydio 8 与 Pydio Cells

Pydio 于 2007 年以 AjaXplorer 之名起步,之后发展为一个自托管(self-hosted)的文件同步与共享平台。本文讨论的是Pydio 8,即基于 PHP 的遗留版本(从 AjaXplorer 一路演进的 LAMP 技术线):它是一个由 MySQL、PostgreSQL 或 SQLite 支撑、经由 Web 服务器对外服务的 PHP 应用。

需要先明确一个关键事实:如今活跃开发的版本是Pydio Cells——2018 年发布、用 Go 完全重写的版本,原因是原团队在大型文件协作场景下触碰到了 PHP 能力的天花板。而Pydio 8 已于 2019 年 12 月停止维护,不再获得任何更新。因此,本方案的目标是维护一套已有的 Pydio 8 实例,而不是启动新部署;对新项目而言,应当选用维护中的 Pydio Cells(它不属于 PHP 体系,也不在 Laradock 的能力范围内)。

为什么把 Pydio 8 放进 Docker

一套老旧的 Pydio 8 实例仍然依赖 NGINX、PHP-FPM、MySQL 这些组件。Docker 把这些组件打包进相互隔离的容器,让它们在任何机器上都以相同方式运行。与其把过时的 PHP 版本安装到笔记本或真实服务器上(与机器上其他每个项目互相冲突),不如运行一个可随时丢弃的容器:它复刻了原始运行环境,删除容器即彻底消失。这一点对 Pydio 8 尤其重要——它需要的是一支老旧且不再受支持的 PHP 分支,你绝不想让它靠近宿主机。

难点在于:把容器彼此接好(基础镜像、PHP 扩展、网络、权限)往往是一周繁琐的 Docker 手工活。这正是 Laradock 替你消除的部分。

为什么 Laradock 是承载 Pydio 8 的合适选择

Pydio 团队没有为 Pydio 8 维护官方 Docker 镜像(团队的 Docker 工作已全部转向 Cells),因此一套开箱即用、无锁定(no-lock-in)的环境对维系旧实例格外重要。Laradock 之所以合适,原因如下:

  • 永远不会被锁定在单一生态里。Laradock 与框架无关。你可以让遗留的 Pydio 8 实例继续运行,同时在同一套环境中用同样的命令并排跑起 Laravel 或 WordPress 项目。
  • 灵活度远高于原生安装。提供 100+ 现成服务,PHP 版本从 5.6 到 8.5 任选(见 Intro 中的服务总览),你可以精确锁定 Pydio 8 所需的旧 PHP 分支,而不触碰机器上的任何其他内容。
  • 没有黑盒,一切都归你所有。不生成神秘文件、没有魔法、没有介于你和 Docker 之间的包装二进制。每一个 Dockerfile 和 compose 文件都摆在眼前可供阅读和修改——当某个包老到需要手工打补丁时,这一点至关重要。例如 php-fpm/Dockerfile 中就能看到,针对 PHP 7.1/7.2 构建时会把 Debian 软件源切到archive.debian.org以应对已归档的软件仓库。
  • 无需学习新东西。你使用的是纯正的docker compose,这项知识可直接迁移到生产环境以及任何其他项目。Laradock CLI 只是一个可选的便利层,从来不是硬性要求——从 laradock 脚本头部注释可以确认其设计契约:不保存状态、不生成文件、每条命令都会打印它实际执行的docker compose命令,纯docker compose始终同样可用。

具体到 Pydio 8,它给你的是:一套钉在老 PHP 分支上的 NGINX + PHP-FPM 栈、已经接好线的 MySQL/PostgreSQL,以及一个用来运行其 Web 安装向导的workspace容器。

用 Laradock 运行 Pydio 8 的完整步骤

1. 把 Laradock 加入你的项目

cd my-pydio-instance git clone https://gitcode.com/gh_mirrors/la/laradock cd laradock

(还没有 Pydio 8 代码库?那就先克隆 Laradock,然后在后续步骤中把既有安装放到workspace容器里。如果你是全新起步,请改用 Pydio Cells——它不在 PHP 体系内,也不在 Laradock 的范围内。)

2. 选择实例所需的服务

Pydio 8 需要一台 Web 服务器和一个数据库。Web 服务器会自动拉入 PHP-FPM——在 nginx/compose.yml 中可以看到nginx服务通过depends_on依赖php-fpm,并把宿主机的代码目录${APP_CODE_PATH_HOST}挂载为容器内的${APP_CODE_PATH_CONTAINER},把站点配置目录${NGINX_SITES_PATH}挂载到/etc/nginx/sites-available

用 Laradock CLI 启动:

./laradock start nginx mysql workspace

或者直接用 Docker Compose:

cp .env.example .env docker compose up -d nginx mysql workspace

更喜欢 PostgreSQL?换掉名字即可:./laradock start nginx postgres workspace(或docker compose up -d nginx postgres workspace)。完整服务目录见 Intro 文档。

希望有交互式引导?可选的 Laradock CLI 会带你逐步选择:先./laradock setup,再./laradock start。它会打印出每一步真实执行的命令。

3. 让 Pydio 8 指向容器数据库

Pydio 8 自己的安装向导会在你第一次通过浏览器运行时,把数据库连接写入data/plugins/conf.serial.php(或等效的配置插件)。向导询问时,按主机名(hostname)指向容器:

Database host: mysql Database name: default Database user: default Database password: secret

这套默认的数据库名、用户和密码来自 Laradock 的 mysql/defaults.env:

MYSQL_DATABASE=default MYSQL_USER=default MYSQL_PASSWORD=secret MYSQL_ROOT_PASSWORD=root MYSQL_PORT=3306 MYSQL_VERSION=8.4

覆盖其中任何一项的方法:在 Laradock 的.env中加上对应行(.env永远优先)。这些变量经由 mysql/compose.yml 注入 MySQL 容器,数据文件则持久化在${DATA_PATH_HOST}/mysql。注意:数据库名、用户、密码只在首次初始化数据目录时生效,之后修改.env不会自动更新已存在的数据库(详见 getting-started 文档)。

4. 安装并运行你的实例

进入workspace容器,放置你既有的 Pydio 8 代码库,然后在浏览器里完成安装:

用 Laradock CLI:

./laradock workspace

或用 Docker Compose:

docker compose exec workspace bash

进入容器后:

# 把你的 Pydio 8 文件放入当前目录

然后打开 http://localhost,使用上面的数据库设置完成基于 Web 的安装向导。

这里的路径映射来自 workspace/compose.yml:${APP_CODE_PATH_HOST}挂载为${APP_CODE_PATH_CONTAINER}。NGINX 侧则通过 nginx/sites/default.conf 把站点根目录指向/var/www/public,并将.php请求经fastcgi_pass php-upstream转发给 PHP-FPM。

随时更换 PHP 版本

这正是原生安装的痛点、Laradock 的亮点——尤其是对钉死在旧运行时上的项目。在 Laradock 的.env中设置版本并重建:

PHP_VERSION=7.2

用 Laradock CLI:

./laradock rebuild php-fpm workspace

或用 Docker Compose:

docker compose build php-fpm workspace

版本是如何生效的?看 php-fpm/Dockerfile:基础镜像由ARG LARADOCK_PHP_VERSION拼出,即FROM laradock/php-fpm:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION};而 workspace/compose.yml 又把.env中的PHP_VERSION作为LARADOCK_PHP_VERSION构建参数传给workspace。因此一个变量即可同时控制 PHP-FPM 与 workspace 的 PHP 版本。.env.example中默认值是PHP_VERSION=8.4

Pydio 8 是为更老的 PHP 分支编写的(其支持窗口在 PHP 8 普及之前就已结束);Laradock 覆盖从 PHP 5.6 到 8.5 的全部版本(见 Intro 文档),因此你可以把 Pydio 8 需要的那个精确的旧运行时隔离起来,与机器上的其他项目互不干扰。

让实例上线

当你的 Pydio 8 实例就绪后,同一套 Laradock 栈就变成了你的部署方案:构建一个加固过的镜像,把它推送到你选择的任何主机:

./laradock ship

然后挑选目标平台并跟随其简短指南——单台服务器、托管平台或 Kubernetes。部署到生产环境 列出了每家提供商(Fly.io、Render、Railway、DigitalOcean、AWS、Google Cloud、Azure、Kamal、Kubernetes),每家都附有现成的配置文件;生产目录下的模板与说明见 production/。无需学习每家特有的魔法:Docker 镜像在任何地方都以相同方式运行。请务必牢记:Pydio 8 已不再维护,应把它锁在自己的网络控制之后,任何公网暴露都要谨慎对待。

常见问题

我需要在本机安装旧版 PHP 才能运行 Pydio 8 吗?

不需要。一切都运行在容器里。你在 Laradock 的.env中锁定旧 PHP 分支,它绝不会触碰宿主机。

一个典型的 Pydio 8 实例应该启动哪些服务?

nginx mysql workspace即可覆盖:Web 服务器、数据库和一个 Shell。如果更偏好 PostgreSQL,把mysql换成postgres即可。

新项目应该用 Pydio 8 吗?

不应该。Pydio 8 已于 2019 年 12 月停止维护且不再更新。新项目应关注 Pydio Cells——它用 Go 编写,不在这个 PHP 导向方案的范围内。

我能在同一台机器上让 Pydio 8 与现代 PHP 项目并排运行吗?

可以。给每个项目一套独立的 Laradock,使用唯一的COMPOSE_PROJECT_NAMEDATA_PATH_HOST(它们分别隔离容器命名空间与数据目录),并在每套中设置不同的PHP_VERSION,这些项目就能在同一台机器上独立运行——这也是 cli 文档 中明确推荐的隔离方式。

这和我在生产环境使用的 Docker 配置一样吗?

容器是生产风格的(真正的 NGINX + PHP-FPM),因此它比原生安装更接近生产形态;但要记住,Pydio 8 本身已不再维护,无论怎么托管都带有未修复的安全风险。参见 为生产准备 Laradock 中仍然适用的加固步骤。

仓库证据参考

文中结论均可在本仓库对应位置验证:

  • mysql/defaults.env:MySQL 默认库名/用户/密码/端口与版本
  • mysql/compose.yml:数据库环境变量注入与数据卷挂载
  • nginx/compose.yml:nginx 依赖 php-fpm、站点与代码目录挂载
  • nginx/sites/default.conf:默认站点根目录与 PHP 请求转发
  • php-fpm/Dockerfile:PHP 版本驱动的镜像选择与旧版本软件源处理
  • workspace/compose.yml:PHP_VERSION作为构建参数传入 workspace
  • .env.example:PHP_VERSION默认值等全部可配置项
  • laradock:CLI 设计契约与命令透传机制
  • DOCUMENTATION/docs/Intro.md:支持的服务与 PHP 版本范围
  • DOCUMENTATION/docs/production.md:生产部署与加固步骤
  • DOCUMENTATION/docs/getting-started.md:数据库凭据首次生效的说明
  • DOCUMENTATION/docs/cli.md:CLI 用法与多项目隔离配置

对比不同环境方案?参见完整的 Laradock 与其他方案对比。准备好开始了?五分钟入门 即可上手。

  • 后端
  • 开发工具
  • DevOps

【免费下载链接】laradock

Full PHP development environment for Docker. Run Laravel, Symfony, CodeIgniter, Phalcon, WordPress, Drupal, Magento, Moodle, or any PHP project with 70+ pre-configured services: Nginx, Apache, PHP-FPM, MySQL, PostgreSQL, MongoDB, Redis, Elasticsearch & more.

项目地址:https://gitcode.com/gh_mirrors/la/laradock
点击查看免费下载

相关推荐

上一篇:ZXing-C++ 开发者指南
下一篇:Stable Fast 3D 项目安装与配置指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询