# php-docker **Repository Path**: panxu11/php-docker ## Basic Information - **Project Name**: php-docker - **Description**: php框架仓库 - **Primary Language**: PHP - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-27 - **Last Updated**: 2025-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] # 项目简介 本项目旨在收集主流PHP框架及其各历史版本的源代码,并为每个框架提供基于Docker的标准化部署方案。同时,项目也支持原生方式部署:用户可直接下载所需框架及版本的原始源代码,通过PHP-FPM+Nginx的常规方式即可运行,保证源码未做任何更改,保持原始风貌。 # 功能亮点 - 收录主流PHP框架(如Laravel、Symfony、ThinkPHP、Yii等)及其各历史版本源码 - 每个框架都提供Docker部署示例与配置,支持一键启动 - 支持原生部署方式,源码可直接通过PHP-FPM+Nginx运行 - 框架源码保证原汁原味、无任何改动,适合学习对比和测试 - 统一的目录结构与部署文档,便于快速查找和使用 # 收录的框架及历史版本详细 | 框架名称 | 已收录版本 | Docker部署支持情况 |官网/GitHub地址 | | ---------- | ---------------------| ----------------- |----| | ThinkPHP | 3.2, 5.0,5.1,6.x,8.0 | 已完成 | [官网地址](https://www.thinkphp.cn/) / [GitHub](https://github.com/top-think/think)| | Webman | 1.x,2.x| 已完成 |[官网地址](https://www.workerman.net/webman/) / [GitHub](https://github.com/walkor/webman)| | Laravel | 4.2,5.8,6.x,7.x,8.x,9.x,10.x,11.x,12.x |已完成 |[官网地址](https://laravel.com/) / [GitHub](https://github.com/laravel/laravel)| | Yii | 1.1,2.0 | 已完成 |[官网地址](https://www.yiiframework.com/) / [GitHub](https://github.com/yiisoft-contrib/yiiframework.com)| | CakePHP | 未开始 | 否 |[官网地址](https://cakephp.org/) / [GitHub](https://github.com/cakephp/cakephp)| | CodeIgniter | 2.x,3.x,4.x | 已完成 |[官网地址](https://codeigniter.com/) / [GitHub](https://github.com/codeigniter4/CodeIgniter4)| | Hyperf | 未开始 | 否 |[官网地址](https://www.hyperf.io/) / [GitHub](https://github.com/hyperf/hyperf)| | Phalcon | 未开始 | 否 |[官网地址](https://phalcon.io/en-us) / [GitHub](https://github.com/phalcon/phalcon)| | Symfony | 未开始 | 否 |[官网地址](https://symfony.com/) / [GitHub](https://github.com/symfony/symfony)| # 适用人群 - PHP开发者 - 框架学习者与研究者 - 运维与DevOps工程师 - 需要历史版本代码支持的团队 # 使用方法 可选择 Docker 方式一键部署,或下载源码后通过本地 PHP-FPM+Nginx 进行原生部署。具体步骤及配置详见各框架目录下的 README.md 与 docker-compose.yml 说明。 # Laravel 12 Framework 项目使用说明 本项目基于 **PHP Laravel 12** 框架,本项目提供完整源码及两种主流的部署方式,适合不同场景下的开发与部署需求。 - 传统部署(nginx + php-fpm) - Docker 部署(支持开发挂载卷和整体打包两种模式) ## 目录结构 ```text Laravel/ └── laravel-12.x/ ├── ../ # 官方原始源码 ├── nginx.conf # 原生环境部署 Nginx 配置 └── docker/ # docker相关配置 ├──Dockerfile # Dockerfile 打包模式Dockerfile ├──Dockerfile.volume # Dockerfile 挂载模式Dockerfile ├──docker-compose.yml # 打包模式基础配置 ├──docker-compose.override.yml # 挂载模式配置,自动被 docker-compose 读取并覆盖 └──README.md # 当前版本的部署与适配说明 ``` --- ## 一、源码与传统部署(nginx + php-fpm) 适合习惯使用传统 LEMP 环境的用户,直接运行源码,无需 Docker。 ### 1. 环境准备 - PHP 8.2+,包含 php-fpm 服务 - nginx 服务器 - MySQL 或其他数据库服务 - 项目源码放置目录,例如 `/var/www/laravel12` ### 2. nginx 配置 项目提供 `nginx.conf` 示例配置(请参考laravel-12.x根目录下nginx.conf) ### 3. 权限设置 确保 web 用户有读写权限: ```bash sudo chown -R www-data:www-data /var/www/laravel12 sudo find /var/www/laravel12 -type f -exec chmod 644 {} \; sudo find /var/www/laravel12 -type d -exec chmod 755 {} \; ``` ### 4. 重启服务并访问 重启 php-fpm 与 nginx: ```bash sudo systemctl restart php8.2-fpm sudo systemctl restart nginx ``` 访问: http://你的服务器IP或域名/ --- ## 二、Docker 部署 适合希望使用容器技术快速启动和环境隔离的用户。 Docker 部署支持两种模式: - 挂载卷开发模式:代码与宿主机同步,适合开发调试 - 整体打包镜像模式:镜像内包含代码,适合生产或快速测试 ### 环境准备 - 已安装 [Docker](https://docs.docker.com/get-docker/) - 已安装 [docker-compose](https://docs.docker.com/compose/install/) - 推荐使用 Linux 或 WSL2 等高性能本地开发环境 --- ### 1. 挂载卷开发模式 > 使用 `docker-compose.volume.yaml` 配置,宿主机代码实时映射到容器。 #### 启动命令 ```bash cd Laravel/laravel-12.x/docker docker-compose -f docker-compose.volume.yaml -p laravel12-volume up -d --build ``` ### 访问项目 假设端口映射为 `8081:80`: ``` http://localhost:8081 ``` ### 2. 整体打包镜像模式 > 使用标准 Dockerfile 构建,镜像内包含完整代码,适合生产环境或快速部署。 #### 2.1 使用 docker-compose 启动 启动命令: ```bash cd Laravel/laravel-12.x/docker docker-compose -f docker-compose.yaml up -d --build ``` #### 访问项目 假设端口映射为 `8082:80`: ``` http://localhost:8082 ``` #### 2.2 直接使用 docker run 启动 构建镜像: ```bash cd Laravel/laravel-12.x/docker docker build -f Dockerfile -t laravel12:latest . ``` 启动容器: ```bash docker run -d --name laravel12-run -p 8082:80 laravel12:latest ``` #### 访问项目 假设端口映射为 `8081:80`: ``` http://localhost:8081 ``` ### 容器管理 进入容器: ```bash docker exec -it laravel12 sh ``` 停止并移除容器: ```bash docker-compose -f docker-compose.yaml down ``` --- ### 容器管理 进入容器: ```bash docker exec -it laravel12volume_laravel-app_1 bash ``` > 容器名可以通过 `docker ps` 查看 停止并移除容器: ```bash docker-compose -f docker-compose.volume.yaml -p laravel12volume down ``` 查看日志: ```bash docker logs -f laravel12-run ``` 进入容器: ```bash docker exec -it laravel12-run bash ``` 停止并删除容器: ```bash docker stop laravel12-run docker rm laravel12-run ``` --- ## 常用命令参考 | 需求 | 命令示例 | |---------------------------|----------------------------------------------------------------------------------------------------| | 查看所有容器 | `docker ps -a` | | 查看运行中容器 | `docker ps` | | 查看容器日志 | `docker logs -f <容器名或ID>` | | 进入容器命令行 | `docker exec -it <容器名或ID> bash` | | 清理孤儿容器 | `docker-compose -f <文件> -p <项目名> up -d --remove-orphans` | | 停止并移除当前项目所有容器| `docker-compose -f <文件> -p <项目名> down` | --- ## 注意事项 - **端口映射**:确保所选端口(如8080/8081/8082等)未被其他服务占用。 - **项目名冲突**:建议使用 `-p` 指定项目名,避免多个 compose 项目资源冲突。 - **文件挂载性能**:开发模式挂载卷有助于实时同步,但在 Windows/macOS 下性能有限,Linux/WSL2更佳。 - **环境变量配置**:如需自定义数据库、缓存等参数,请修改 `.env` 文件或 docker-compose 配置。 --- ## 总结 | 方式 | 适用场景 | 特点 | |------------------------------|--------------------|--------------------------| |传统 nginx+php-fpm |传统服务器或自定义环境|灵活可控,需环境手动配置| | docker-compose.yaml | 生产/标准开发 | 镜像包含代码,启动即用 | | docker-compose.volume.yaml | 本地开发调试 | 宿主机代码同步,无需重建 | | docker run(整体打包) | 部署/测试/演示 | 一条命令,快速启动 | --- ### 说明: - 这样结构清晰,方便用户根据需求选择部署方式 - 传统部署放在第一个,满足你“源码+传统部署”的初衷 - Docker 部署分两层,挂载卷和整体打包,且整体打包又支持 docker-compose 和 docker run 两种启动 - 常用命令和注意事项帮助用户快速上手和避免坑 如需更多帮助,请查阅项目内详细文档或提交问题反馈。