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

Laravel应用Docker化启动失败:entrypoint.sh未找到求助

Laravel Docker部署启动失败:entrypoint.sh 找不到的解决方法

错误核心原因

你遇到的错误源于两个关键问题:

  • entrypoint.sh 未设置可执行权限,容器无法运行该脚本
  • Dockerfile中指定的ENTRYPOINT使用了相对路径,系统无法在$PATH中定位到该脚本

分步解决方案

1. 给本地entrypoint.sh添加可执行权限

在项目根目录执行以下命令:

chmod +x entrypoint.sh

2. 修改Dockerfile,确保脚本路径与权限正确

更新Dockerfile,添加权限设置并使用绝对路径指定ENTRYPOINT:

FROM php:8.2 as php

RUN apt-get update -y
RUN apt-get install -y unzip libpq-dev libcurl4-gnutls-dev
RUN docker-php-ext-install pdo pdo_mysql bcmath

WORKDIR /var/www
COPY . .
# 给entrypoint.sh添加可执行权限
RUN chmod +x entrypoint.sh

COPY --from=composer:2.7.4 /usr/bin/composer /usr/bin/composer

ENV PORT=8000
# 使用绝对路径指定entrypoint脚本
ENTRYPOINT [ "/var/www/entrypoint.sh" ]

3. (可选)优化entrypoint.sh细节

虽然不是当前错误的直接原因,但可以调整脚本避免后续问题:

#!/bin/bash

if [ ! -f "vendor/autoload.php" ]; then
    composer install --no-progress --no-interaction
fi

if [ ! -f ".env" ]; then
    echo "Creating env file for env $APP_ENV"
    cp .env.example .env
else
    echo "env file exists."
fi

role=${CONTAINER_ROLE:-app}
# 修正:输出实际的role变量值
echo "Container role: $role"
if [ "$role" = "app" ]; then
    php artisan migrate
    php artisan key:generate
    php artisan cache:clear
    php artisan config:clear
    php artisan route:clear
    # php artisan serve是阻塞命令,后续exec不会执行,可按需调整
    php artisan serve --port=$PORT --host=0.0.0.0 --env=.env
fi

4. 重新构建并启动容器

执行以下命令完成部署:

docker-compose down
docker-compose build --no-cache
docker-compose up -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:56:38