在 laravel docker 容器上出现不正确的错误

问题描述 投票:0回答:1

我最近在学习 docker,并尝试将现有的 Web 应用程序转换为容器。但是,几天来我一直收到一致的错误,但仍未解决。该项目在本地和 AWS Elastic Beanstalk(通过 CodePipeline)上运行得很好。只是在 docker 上,它受到这个错误的困扰,这甚至没有意义。

如果您可以看到下图,则错误与第 51 行(之前的第 50 行)有关;所以我在第 44 行添加了 dd,但错误引用了第 50 行,甚至没有触发 dd(第 44 行),然后仍然在第 51 行显示错误(之前添加 dd 之前是第 50 行)。几天来,当我利用空闲时间研究这个问题时,我一直在摸索这个问题。这对我来说毫无意义。

enter image description here

我想指出,composer install、npm install 和 npm run build 都成功了。 public、node_modules和vendor文件夹都添加到dockerignore和gitignore中。因此它们都是在运行时生成/编译的,然后由 fpm 和 nginx 提供服务。这些文件都不会从我的本地或存储库复制到容器中。 (并且)我也尝试将它们添加到存储库(供应商和 npm run build 后的公共文件夹),但我仍然遇到同样的错误。

docker-compose.yml

services:
server:
    container_name: server
    platform: linux/amd64
    image: xxxx/xxmy-private-repoxx
    build:
        context: .
        dockerfile: Dockerfile
    restart: unless-stopped
    tty: true
    working_dir: /var/www
    volumes:
        - /var/www
    ports:
        - "11001:9000"

Dockerfile

FROM php:8.1-fpm as stage-php

# set working directory
WORKDIR /var/www

# install dependencies
RUN --mount=type=cache,target=/var/cache/apt \
    apt-get update -y \
    && apt-get install -y curl unzip libsodium-dev libpq-dev libcurl4-gnutls-dev libonig-dev zlib1g-dev libpng-dev libc-client-dev libkrb5-dev libicu-dev libzip-dev libxslt-dev software-properties-common nginx npm

# install php extensions and cleanup
RUN --mount=type=cache,target=/var/cache/apt \
    docker-php-ext-configure gd \
    && docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
    && docker-php-ext-configure zip \
    && docker-php-ext-install gd soap sodium imap intl mysqli xsl pdo pdo_mysql bcmath curl opcache mbstring zip \
    && apt autoremove -y \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

# set default user and group
RUN usermod --uid 1000 www-data \
    && groupmod --gid 1000 www-data

# composer and install
COPY --chown=www-data:www-data . /var/www
COPY --from=composer:2.7.2 /usr/bin/composer /usr/bin/composer

# transfer custom configs
COPY ./docker/php/php.ini /usr/local/etc/php/php.ini
COPY ./docker/php/php-fpm.conf /usr/local/etc/php-fpm.d/www.conf
COPY ./docker/php/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf
COPY ./docker/nginx/fastcgi_params /etc/nginx/fastcgi_params
COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf
COPY ./docker/php/entrypoint.sh /app-container-entrypoint.sh

RUN chmod +x /app-container-entrypoint.sh
ENTRYPOINT ["/app-container-entrypoint.sh"]

entrypoint.sh

#!/bin/bash

#if [ ! -f "vendor/autoload.php" ]; then
composer install --no-progress --no-interaction
chown -R www-data:www-data /var/www/vendor

npm install
chown -R www-data:www-data /var/www/node_modules

npm run build
chown -R www-data:www-data /var/www/public
#fi


php-fpm -D
nginx -g "daemon off;"

希望有人能指出我解决此问题的正确方向。这是阻止我继续将其他网络应用程序转换为容器的唯一因素。

php laravel docker
1个回答
0
投票

神圣的。我能够让它发挥作用。我不敢相信这只是因为 opcache。我所要做的就是设置

opcache.enable=0

php.ini

[opcache]
opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=50000
opcache.max_wasted_percentage=15
opcache.validate_timestamps=0
opcache.revalidate_freq=0
opcache.save_comments=0
opcache.fast_shutdown=1

我对opcache配置不太熟悉,我只是将其复制到某个地方并稍微增加了一些值(内存消耗和interned_strings_buffer);以前工作得很好。我什至注意到加载时间略有减少(120-140 毫秒到 20-60 毫秒)。

如果有熟悉这一点的人,我希望有人能解释一下。

© www.soinside.com 2019 - 2024. All rights reserved.