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

如何解决Laravel Sail启动报start-container可执行文件未找到错误

问题根因

报错核心是配置存在三处不匹配问题,直接触发start-container可执行文件找不到的错误:

  • 自定义Dockerfile未生效:docker-compose.yml中laravel.test服务的构建上下文指定为./vendor/laravel/sail/runtimes/8.1,并未加载你在项目根目录编写的基于php:7.4-fpm的Dockerfile,且Sail官方8.1运行时默认使用PHP8.1版本,与你预期的7.4版本不匹配。
  • 启动脚本缺失:start-container是Laravel Sail预置的容器启动入口脚本,仅存在于Sail官方运行时镜像或正确配置的自定义镜像中。你自行编写的Dockerfile既没有拷贝该脚本,也没有配置对应执行权限与入口规则,即使被加载也会触发当前报错。
  • 数据库连接配置错误:.env中DB_HOST设置为db,但docker-compose.yml内定义的数据库服务名为mysql,即使容器启动成功也无法正常连接数据库。
修复方案

根据你是否需要使用PHP7.4版本,二选一执行即可:

方案1:使用Sail官方默认PHP8.1环境(推荐,无需自定义镜像)

如果你不需要强制使用PHP7.4,直接删除项目根目录下自行编写的Dockerfile,修正.env配置即可:

  1. 打开.env文件,将DB_HOST=db修改为DB_HOST=mysql
  2. 清理旧构建缓存,重新启动服务:
docker-compose down --rmi all
docker-compose up -d

方案2:保留自定义PHP7.4镜像

如果你必须使用PHP7.4版本,按以下步骤修正配置:

  1. 修改docker-compose.yml中laravel.test服务的构建配置,将构建上下文指向项目根目录,补全构建参数:
laravel.test:
        build:
            context: ./
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
                user: '${WWWUSER:-sail}'
                uid: '${WWWUID:-1000}'
        # 其余原有配置保持不变
  1. 补全自定义Dockerfile的缺失内容,在原有文件的USER $user行之前追加以下配置:
# 安装Sail运行必需的系统依赖
RUN apt-get update && apt-get install -y \
    supervisor \
    nodejs \
    npm

# 拷贝Sail预置的启动脚本与配置文件
COPY ./vendor/laravel/sail/runtimes/8.1/start-container /usr/local/bin/start-container
COPY ./vendor/laravel/sail/runtimes/8.1/supervisord.conf /etc/supervisor/supervisord.conf
RUN chmod +x /usr/local/bin/start-container

# 配置容器启动入口
ENTRYPOINT ["start-container"]
  1. 打开.env文件,将DB_HOST=db修改为DB_HOST=mysql
  2. 清理旧构建缓存,重新构建启动:
docker-compose down --rmi all
docker-compose build --no-cache
docker-compose up -d
验证结果

启动完成后执行docker-compose ps,所有服务状态显示为Up即为修复成功。

内容的提问来源于stack exchange,提问作者Amithash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:09:41