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
相关产品推荐
相关产品推荐

