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

Laravel+Docker部署至Render时迁移失败及依赖兼容问题求助

Laravel Docker部署Render时的依赖兼容问题

我是Laravel+Docker新手,将Laravel项目通过Docker部署到Render托管服务,使用pgsql数据库,配置信息已写入Render提供的.env文件。部署日志显示执行composer global require hirak/prestissimo时出现错误:

  • hirak/prestissimo 0.3.10要求PHP版本为^5.3.2 || ^7.0,与当前安装的PHP8.2.7不兼容
  • 要求composer-plugin-api ^1.0.0,与当前Composer2.3.0版本不匹配

虽然后续依赖安装完成,但迁移提示无内容可迁移,需要解决这个依赖兼容问题。以下是相关配置文件:

Dockerfile

FROM richarvey/nginx-php-fpm:latest

COPY . .

# Image config
ENV SKIP_COMPOSER 1
ENV WEBROOT /var/www/html/public
ENV PHP_ERRORS_STDERR 1
ENV RUN_SCRIPTS 1
ENV REAL_IP_HEADER 1

# Laravel config
ENV APP_ENV production
ENV APP_DEBUG false
ENV LOG_CHANNEL stderr

# Allow composer to run as root
ENV COMPOSER_ALLOW_SUPERUSER 1

CMD ["/start.sh"]

.dockerignore

/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log

scripts/00-larvel-deploy.sh

#!/usr/bin/env bash
echo "Running composer"
composer global require hirak/prestissimo
composer install --no-dev --working-dir=/var/www/html

echo "generating application key..."
php artisan key:generate --show

echo "Caching config..."
php artisan config:cache

echo "Caching routes..."
php artisan route:cache

echo "Running migrations..."
php artisan migrate --force

conf/ngnix/ngnix-site.conf(注意:此处内容粘贴错误)

#!/usr/bin/env bash
echo "Running composer"
composer global require hirak/prestissimo
composer install --no-dev --working-dir=/var/www/html

echo "generating application key..."
php artisan key:generate --show

echo "Caching config..."
php artisan config:cache

echo "Caching routes..."
php artisan route:cache

echo "Running migrations..."
php artisan migrate --force

解决方案

1. 移除hirak/prestissimo依赖

hirak/prestissimo是Composer 1.x专属的并行下载插件,Composer 2.x已经内置了并行下载功能,完全不需要额外安装这个插件。直接删除部署脚本中对应的命令即可:

  • 编辑scripts/00-larvel-deploy.sh,删掉composer global require hirak/prestissimo这一行
  • 修正conf/ngnix/ngnix-site.conf:这个文件应该是Nginx的站点配置,而非部署脚本,替换为标准的Laravel Nginx配置(示例如下),否则Nginx无法正常提供服务:
server {
    listen 80;
    root /var/www/html/public;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    location ~ /\.ht {
        deny all;
    }
}

2. 迁移问题排查

如果迁移提示无内容可迁移,按以下步骤排查:

  • 确认Render提供的pgsql数据库配置(DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD)已正确写入.env文件
  • 检查本地的迁移文件(database/migrations/目录下的文件)是否已提交到代码仓库,未被.gitignore排除
  • 可以在部署脚本中添加php artisan migrate:status命令,查看迁移执行状态,确认哪些迁移未被执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:09:51