用 Laradock 在 Docker 中运行 Pydio 8:为遗留 PHP 文件共享平台搭建 NGINX + PHP-FPM + MySQL 环境
后端开发工具DevOps【免费下载链接】laradockFull 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 CellsPydio 于 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 Composecp .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.envMYSQL_DATABASEdefault MYSQL_USERdefault MYSQL_PASSWORDsecret MYSQL_ROOT_PASSWORDroot MYSQL_PORT3306 MYSQL_VERSION8.4覆盖其中任何一项的方法在 Laradock 的.env中加上对应行.env永远优先。这些变量经由 mysql/compose.yml 注入 MySQL 容器数据文件则持久化在${DATA_PATH_HOST}/mysql。注意数据库名、用户、密码只在首次初始化数据目录时生效之后修改.env不会自动更新已存在的数据库详见 getting-started 文档。4. 安装并运行你的实例进入workspace容器放置你既有的 Pydio 8 代码库然后在浏览器里完成安装用 Laradock CLI./laradock workspace或用 Docker Composedocker 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_VERSION7.2用 Laradock CLI./laradock rebuild php-fpm workspace或用 Docker Composedocker 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_VERSION8.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_NAME和DATA_PATH_HOST它们分别隔离容器命名空间与数据目录并在每套中设置不同的PHP_VERSION这些项目就能在同一台机器上独立运行——这也是 cli 文档 中明确推荐的隔离方式。这和我在生产环境使用的 Docker 配置一样吗容器是生产风格的真正的 NGINX PHP-FPM因此它比原生安装更接近生产形态但要记住Pydio 8 本身已不再维护无论怎么托管都带有未修复的安全风险。参见 为生产准备 Laradock 中仍然适用的加固步骤。仓库证据参考文中结论均可在本仓库对应位置验证mysql/defaults.envMySQL 默认库名/用户/密码/端口与版本mysql/compose.yml数据库环境变量注入与数据卷挂载nginx/compose.ymlnginx 依赖 php-fpm、站点与代码目录挂载nginx/sites/default.conf默认站点根目录与 PHP 请求转发php-fpm/DockerfilePHP 版本驱动的镜像选择与旧版本软件源处理workspace/compose.ymlPHP_VERSION作为构建参数传入 workspace.env.examplePHP_VERSION默认值等全部可配置项laradockCLI 设计契约与命令透传机制DOCUMENTATION/docs/Intro.md支持的服务与 PHP 版本范围DOCUMENTATION/docs/production.md生产部署与加固步骤DOCUMENTATION/docs/getting-started.md数据库凭据首次生效的说明DOCUMENTATION/docs/cli.mdCLI 用法与多项目隔离配置对比不同环境方案参见完整的 Laradock 与其他方案对比。准备好开始了五分钟入门 即可上手。赞分享后端开发工具DevOps【免费下载链接】laradockFull 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 在 Docker 中运行 FluxBB 论坛NGINX PHP-FPM MySQL 全容器化实战指南使用 Laradock 在 Docker 中运行 FluxBB 论坛NGINX PHP FPM MySQL 全容器化实战指南 FluxBB 是一个轻量后端开发工具DevOps告别回测与实盘脱节3步跑通你的第一个Lean量化交易引擎告别回测与实盘脱节3步跑通你的第一个Lean量化交易引擎 凌晨三点还在调参结果一切实盘滑点和手续费把回测里漂亮的夏普比啃掉了一半——这种回测很能打、实盘后端开发工具DevOps在 Laradock 上运行 Yii 应用NGINX PHP-FPM MySQL 全容器化开发实战指南在 Laradock 上运行 Yii 应用NGINX PHP FPM MySQL 全容器化开发实战指南 本篇指南以 Laradock 仓库中 yii后端开发工具DevOps上一篇ZXing-C 开发者指南下一篇Stable Fast 3D 项目安装与配置指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考