You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目Docker Web容器未运行问题求助(Ubuntu基础镜像)

Docker部署Laravel踩坑:Web容器死活起不来,MySQL/Adminer却正常运行

问题详情

我最近在尝试用Docker部署Laravel项目,选了Ubuntu作为基础镜像,也按要求配置了Laravel的各种依赖。结果执行docker-compose up之后,MySQL和Adminer容器都正常运行,唯独Web容器压根没启动起来,完全摸不着头脑。

下面是我的配置文件(麻烦补充完整内容):

Dockerfile

# 请粘贴你的Dockerfile内容

docker-compose.yml

# 请粘贴你的docker-compose.yml内容

先试试这些排查方法!

因为看不到具体配置,我先给你列几个最常见的原因和解决办法,大概率能帮你找到问题:

  • 启动命令搞砸了
    先检查Dockerfile里的CMD/ENTRYPOINT,或者docker-compose.yml里的command配置,是不是写错了Laravel的启动命令?比如用内置服务器的话应该是php artisan serve --host=0.0.0.0(必须加--host=0.0.0.0不然容器外访问不到),如果是Nginx+FPM的话,得确保Nginx的启动脚本没问题。命令错了的话容器会直接退出。

  • 依赖没装全或者权限不对
    别以为配置了依赖就万事大吉,说不定漏了某个PHP扩展(比如pdo_mysql、mbstring这些Laravel必需的),或者Composer依赖没装完。你可以手动跑一下镜像看看:

    docker build -t laravel-web .
    docker run -it laravel-web bash
    

    进去后先查PHP扩展:php -m,看看有没有Laravel需要的那些。然后检查项目目录的权限,storage和bootstrap/cache这俩目录必须是可写的,一般可以用chown -R www-data:www-data /var/www/html(如果用www-data用户的话)。

  • 先看日志!先看日志!先看日志!
    这是最直接的排查方式,执行docker-compose logs web,看看Web容器启动失败的日志内容,里面肯定会明确告诉你崩溃原因——比如找不到文件、权限不足、数据库连接失败、环境变量配置错误之类的。

  • 端口冲突或者资源不够
    检查下docker-compose.yml里Web容器的端口映射,比如是不是把80端口映射到本地已经被占用的端口了?或者有没有给容器设置了过低的内存/CPU限制,导致启动不起来。

  • 环境变量没配对
    Laravel靠.env文件运行,如果.env没正确挂载到容器里,或者里面的数据库连接信息等关键配置写错了,启动的时候就会报错。确保docker-compose.yml里正确挂载了.env文件,或者在services.web.envs里配置了必要的环境变量。

  • 镜像构建时出错没注意
    有时候构建镜像的时候有警告或者错误,但你没仔细看,导致镜像本身就有问题。重新构建一次看看:docker-compose build --no-cache web,盯着输出看,有没有红颜色的报错信息。

要是还解决不了...

把你的Dockerfile和docker-compose.yml的完整内容贴出来,或者把docker-compose logs web的日志内容发上来,我帮你精准定位问题!

内容的提问来源于stack exchange,提问作者Prince Kumar Barnwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:20:16