最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Docker 跑 ThinkPHP 8.0 最简方案 2026最新
时间:2026-07-14 09:29:46 编辑:袖梨 来源:一聚教程网
直接用官方php:8.4-apache镜像一行启动ThinkPHP 8.0是当前最简方案:docker run -d --name tp8-web -p 8080:80 -v $(pwd):/var/www/html -e TZ=Asia/Shanghai -e PHP_MEMORY_LIMIT=512M -e OPCACHE_ENABLE=1 php:8.4-apache,需补storage/runtime权限及DB_HOST配置。
直接用官方 php:8.4-apache 镜像启动,不写 Dockerfile、不建 compose 文件,5 秒完成部署——这是当前(2026 年中)跑 ThinkPHP 8.0 最简可行方案。
基础命令一行启动(开发快速验证)
确保你已安装 Docker,并在 ThinkPHP 8.0 项目根目录执行:
- 创建最小启动脚本(如
start.sh)或直接运行:
docker run -d --name tp8-web -p 8080:80 -v $(pwd):/var/www/html -e TZ=Asia/Shanghai -e PHP_MEMORY_LIMIT=512M -e OPCACHE_ENABLE=1 php:8.4-apache
✅ 说明:
-
php:8.4-apache已预装pdo_mysql、mbstring、openssl、gd、opcache等 ThinkPHP 8.0 必需扩展,无需额外安装 -
-v $(pwd):/var/www/html将当前目录挂载为 Web 根目录,支持热更新(Mac/Linux 下建议加:cached提升性能) -
-e TZ=Asia/Shanghai显式设置时区,避免日志时间错乱、缓存失效等问题 - 访问 https://www.php.cn/link/cbb686245ece57c9827c4bc0d0654a8e 即可看到 ThinkPHP 默认欢迎页
必须补的两处配置(否则 90% 会报错)
ThinkPHP 8.0 启动后常卡在「无法写入 runtime」或「数据库连接失败」,根源是以下两项未显式处理:
立即学习“PHP免费学习笔记(深入)”;
-
storage 和 runtime 目录权限:容器内 Apache 进程以
www-data(UID 33)运行,宿主机目录默认属主不是它
→ 执行:sudo chown -R 33:33 storage runtime -
数据库连接地址:ThinkPHP 的
.env中DB_HOST=mysql是无效的,因为单容器模式下没 mysql 服务
→ 改为DB_HOST=host.docker.internal(Windows/macOS)或DB_HOST=172.17.0.1(Linux Docker Engine 默认网关)
进阶:加 MySQL 容器(仍保持极简)
若需本地连库,不写 docker-compose.yml,可用两行命令启动:
docker run -d --name mysql8 -e MYSQL_ROOT_PASSWORD=Root@2026 -e MYSQL_DATABASE=tp8 -v mysql8-data:/var/lib/mysql -p 3307:3306 --restart unless-stopped mysql:8docker run -d --name tp8-web -p 8080:80 --link mysql8:mysql -v $(pwd):/var/www/html -e TZ=Asia/Shanghai php:8.4-apache
⚠️ 注意:--link 已属旧式用法,但对单机开发足够轻量;此时 .env 中可安全写 DB_HOST=mysql,容器间通过 link 自动解析。
避坑提醒(2026 实测高频问题)
-
别用 php:alpine:Alpine 默认无
libpng/libjpeg,ThinkPHP 图形验证码、图片缩略图直接报错;php:8.4-apache(Debian 基础)更稳 - 别信“PHP 8.5.7”镜像:截至 2026 年 7 月,PHP 官方最新稳定版是 8.4.x,8.5 尚未发布;所有标 8.5.7 的镜像均不可信
-
别忽略 .dockerignore:至少加入
vendor/、node_modules/、.git/,避免大体积文件拖慢构建和挂载 -
别在 CLI 模式查 phpinfo():Apache 模块加载的扩展 ≠ CLI 加载的扩展;验证请用
docker exec tp8-web php -m | grep pdo_mysql
相关文章
- 具有审计签字权的职业叫什么 蚂蚁新村1月14日答案最新 07-15
- Eagle如何更换主题 07-15
- 《神探杰克鼠》小内侦探成就解锁指南 07-15
- 生存33天末世联赛如何通关 07-15
- 《神探杰克鼠》薄命贝蒂的点点滴滴成就解锁指南 07-15
- 哪种海洋鱼类会建造精美的几何图形巢穴来求偶 神奇海洋1月14日答案 07-15