Composer 包版本冲突

Composer package versions conflict

我正在 php 7.3 上使用 docker 做一个 laravel 项目。但是当我安装 laravel/passport 时,当我尝试输入 docker-compose up:

时,我的 docker 容器以代码 255 退出并出现此错误

Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.4.0". You are running 7.3.29. in /app/vendor/composer/platform_check.php on line 24

我试图在我的 Dockerfile 和 composer.json 中将我的 php 版本更改为 7.4,但没有任何变化

Docker 文件:

FROM php:7.4

RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo mbstring pdo_mysql

WORKDIR /app
COPY . .
RUN composer install

CMD php artisan serve --host=0.0.0.0
EXPOSE 8000

composer.json:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "php": "^7.4",
        "fideloper/proxy": "^4.4",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "laravel/framework": "^8.40",
        "laravel/passport": "^10.1",
        "laravel/tinker": "^2.5"
    },
    "require-dev": {
        "barryvdh/laravel-ide-helper": "^2.10",
        "facade/ignition": "^2.5",
        "fakerphp/faker": "^1.9.1",
        "laravel/sail": "^1.0.1",
        "mockery/mockery": "^1.4.2",
        "nunomaduro/collision": "^5.0",
        "phpunit/phpunit": "^9.3.3"
    },
    "autoload": {
        "psr-4": {
            "App\": "app/",
            "Database\Factories\": "database/factories/",
            "Database\Seeders\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\Foundation\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

docker-compose up --build之后:

#7 6.389 configure: error: Package requirements (oniguruma) were not met:
#7 6.389
#7 6.389 No package 'oniguruma' found
#7 6.389
#7 6.389 Consider adjusting the PKG_CONFIG_PATH environment variable if you
#7 6.389 installed software in a non-standard prefix.
#7 6.389
#7 6.389 Alternatively, you may set the environment variables ONIG_CFLAGS
#7 6.389 and ONIG_LIBS to avoid the need to call pkg-config.
#7 6.389 See the pkg-config man page for more details.
#7 ERROR: executor failed running [/bin/sh -c docker-php-ext-install pdo mbstring pdo_mysql]: exit code: 1
------
 > [4/7] RUN docker-php-ext-install pdo mbstring pdo_mysql:
------
executor failed running [/bin/sh -c docker-php-ext-install pdo mbstring pdo_mysql]: exit code: 1
Service 'backend' failed to build : Build failed

使用 --build 选项再次构建您的容器