【问题标题】:Why is this error occuring only when building the docker image为什么只有在构建docker镜像时才会出现这个错误
【发布时间】:2021-05-21 22:00:31
【问题描述】:

我已将我的 Laravel 应用程序从 6 更新到 7 再到 8 没有问题。但是,当我尝试构建我的 docker 映像时,它在 composer install --no-dev -o 命令处失败。如果我在终端中运行相同的命令,则没有错误。 错误是

In Request.php line 335:
                                                                               
  Argument 1 passed to Symfony\Component\HttpFoundation\Request::create() mus  
  t be of the type string, null given, called in /app/vendor/laravel/framewor  
  k/src/Illuminate/Foundation/Bootstrap/SetRequestForConsole.php on line 32

用于构建镜像的命令是@docker build $(DOCKER_BUILD_ARG) -t $(IMAGE_TAG) -f $(DOCKERFILE) . 似乎是 laravel 框架文件的问题。我用谷歌搜索了这个错误,但没有找到任何解决方案。我尝试运行 composer dump autoload、php artisan cache:clar 和 php artisan config:clear,这些都没有解决我的问题。

我的 dockerfile 看起来像这样:

FROM armcanada/php7-mssql:latest

# Copy files
ADD . /app/
ADD php.ini /etc/php.ini
ADD arm-http.conf /etc/httpd/conf.modules.d/arm-http.conf

# Install app dependencies
RUN composer install --no-dev -o

# Fix permissions
RUN chmod -R 777 ./storage
RUN chmod -R 777 ./bootstrap/cache

# Cache route & views
RUN php artisan route:cache
RUN php artisan view:cache

CMD ["start_httpd"]

还有我的 composer.json:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=7.3.0",
        "armcanada/laravel-honeypot": "dev-master",
        "bacon/bacon-qr-code": "^2.0",
        "barryvdh/laravel-dompdf": "^0.8.6",
        "box/spout": "^3.0.1",
        "doctrine/dbal": "^2.7",
        "erusev/parsedown": "^1.7",
        "fideloper/proxy": "~4.0",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "hackzilla/password-generator": "^1.5",
        "itsgoingd/clockwork": "^4.1",
        "laravel/framework": "^8.0",
        "laravel/helpers": "^1.3",
        "laravel/tinker": "^2.0",
        "laravel/ui": "^3.0",
        "maatwebsite/excel": "^3.1",
        "paragonie/constant_time_encoding": "^2.3",
        "predis/predis": "^1.1",
        "rickycezar/laravel-jwt-impersonate": "^1.3",
        "spatie/laravel-permission": "^3.18",
        "tymon/jwt-auth": "^1.0.0",
        "yajra/laravel-datatables": "^1.4"
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.2",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "^9.0"
    },
    "autoload": {
        "psr-4": {
            "Mz\\": "app/",
            "Database\\Seeders\\": "database/seeders/"
        },
        "files": [
            "app/Support/Helpers.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/armcanada/laravel-honeypot"
        }
    ],
    "extra": {
        "laravel": {
            "dont-discover": [
                "tymon/jwt-auth"
            ]
        }
    }
}


【问题讨论】:

  • 不知道为什么我会因此而被否决。我还尝试删除供应商文件夹和 composer.lock 文件,我得到了同样的错误。

标签: laravel docker composer-php


【解决方案1】:

我设法通过编辑app/config.php 文件解决了这个问题。 错误是url 键为空,所以我为env() 函数添加了一个默认值:

'url' => env('APP_URL', 'default'),

【讨论】:

  • 这对我有用。在 .env 上添加 APP_URL 也可以(我的本地 .env 文件没有该变量)。
【解决方案2】:

在运行 composer install 之前我有 .env 文件时遇到同样的错误,然后它工作正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2019-05-18
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多