首页 > 编程语言 >最新 Docker 部署 ThinkPHP 8.0 最简方案

最新 Docker 部署 ThinkPHP 8.0 最简方案

来源:互联网 2026-07-15 19:32:01

使用官方php:8.4-apache镜像,一行命令启动ThinkPHP8.0。需手动创建storage/runtime目录并赋予写入权限,数据库地址改为host.docker.internal或172.17.0.1。避免使用Alpine镜像及未发布的PHP版本,推荐使用稳定版环境。

先说结论:用官方 php:8.4-apache 镜像一行命令启动,不写 Dockerfile、不建 compose 文件,5 秒完成部署——这是当前(2026 年中)跑 ThinkPHP 8.0 最简洁、最可行的方案。下面直接上操作,把关键细节和容易踩的坑一次性说清楚。
直接用官方 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配置。

最新 Docker 部署 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_mysqlmbstringopensslgdopcache 等 ThinkPHP 8.0 必需的扩展,不用额外再装任何东西。
  • -v $(pwd):/var/www/html 把当前目录挂载到容器内的 Web 根目录,改代码后即时生效。Mac/Linux 下建议加上 :cached 来提升性能。
  • -e TZ=Asia/Shanghai 显式设置时区,否则日志时间错乱、缓存失效等问题会一个个找上门。
  • 启动后访问 http://localhost:8080 就能看到 ThinkPHP 默认欢迎页,省去任何额外配置。

必须补的两处配置(否则 90% 会报错)

很多人启动后卡在「无法写入 runtime」或「数据库连接失败」,根源其实就两个地方没显式处理。

  • storage 和 runtime 目录权限:容器内 Apache 进程以 www-data(UID 33)运行,但宿主机目录默认属主不是它。执行一句:sudo chown -R 33:33 storage runtime,问题解决。
  • 数据库连接地址:ThinkPHP 的 .env 里如果写 DB_HOST=mysql,在单容器模式下根本找不到这个服务。正确做法:Windows/macOS 下改为 DB_HOST=host.docker.internal,Linux 下改为 DB_HOST=172.17.0.1(Docker 默认网关)。

进阶:加 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:8

docker 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

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。