Laravel Docker容器出现异常代码错误,请求排查指引
Docker容器化Web应用时的诡异代码行号错误问题
正在学习Docker,尝试将现有Web应用容器化,但连续多日卡在一个毫无逻辑的异常错误上。项目在本地环境、AWS Elastic Beanstalk(通过CodePipeline部署)中运行完全正常,唯独Docker环境里出现这个问题。
错误提示始终指向代码第51行(此前指向第50行);我在第44行添加了dd调试语句,但dd并未触发,错误依旧指向第51行(添加dd前指向第50行),研究多日仍无法理解原因。
环境细节说明
- composer install、npm install及npm run build均执行成功
- public、node_modules和vendor文件夹已加入
.dockerignore和.gitignore,这些文件均在容器运行时生成/编译,由PHP-FPM和Nginx提供服务,并未从本地或代码仓库复制到容器中 - 曾尝试将vendor及npm run build后的public文件夹加入代码仓库,问题依旧
相关配置文件
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;"
希望有人能指明解决方向,这是阻碍我推进其他Web应用容器化的唯一问题。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

