簡體   English   中英

即使我設置了環境變量,ECS Fargate 上的 laravel 也僅顯示 500

[英]laravel on ECS Fargate only shows 500 even I set environment variables

我試圖在 ECS Fargate 類型上運行 PHP Laravel (php-fpm 和 nginx 容器)。

我終於設法讓我的php-fpm 和 nginx容器在 ECS 上運行,但由於某種原因我無法讓 Laravel 運行。

我只看到Laravel 500 錯誤頁面。

在此處輸入圖像描述

另一件事是,即使我設置了 LOG_CHANNEL=ecs,我也無法從 cloudwatch 日志中看到任何Laravel 錯誤日志

        'ecs' => [
            'driver' => 'stack',
            'channels' => ['stderr', 'stdout'],
        ],
        'stdout' => [
            'driver' => 'monolog',
            'level' => 'info',
            'handler' => StreamHandler::class,
            'formatter' => env('LOG_STDOUT_FORMATTER'),
            'formatter_with' => [
                'dateFormat' => '%Y-%m-%d %H:%M:%S'
            ],
            'with' => [
                'stream' => 'php://stdout',
            ],
        ],
        'stderr' => [
            'driver' => 'monolog',
            'level' => 'critical',
            'handler' => StreamHandler::class,
            'formatter' => env('LOG_STDERR_FORMATTER'),
            'formatter_with' => [
                'dateFormat' => '%Y-%m-%d %H:%M:%S'
            ],
            'with' => [
                'stream' => 'php://stderr',
            ],
        ],

這是我的 task_definition,當我運行 Github 操作時,我會重寫容器映像 url。

{
  "family": "handson",
  "containerDefinitions": [
    {
      "name": "app",
      "image": "",
      "cpu": 128,
      "memory": 256,
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-region": "ap-southeast-1",
          "awslogs-group": "/handson/ecs",
          "awslogs-stream-prefix": "app"
        }
      },
      "secrets": [
      {
        "name": "APP_KEY",
        "valueFrom": "/handson/app/key"
      },
      {
        "name": "DB_USERNAME",
        "valueFrom": "/handson/db/username"
      },
      {
        "name": "DB_PASSWORD",
        "valueFrom": "/handson/db/password"
      }
    ],
    "environment": [
      {
        "name": "APP_NAME",
        "value": "2019-aws-handson"
      },
      {
        "name": "APP_ENV",
        "value": "local"
      },
      {
        "name": "APP_DEBUG",
        "value": "true"
      },
      {
        "name": "APP_URL",
        "value": ""
      },
      {
        "name": "LOG_CHANNEL",
        "value": "ecs"
      },
      {
        "name": "DB_CONNECTION",
        "value": "mysql"
      },
      {
        "name": "DB_HOST",
        "value": "handson-mysql.xxxxxxxxxx.ap-southeast-1.rds.amazonaws.com"
      },
      {
        "name": "DB_PORT",
        "value": "3306"
      },
      {
        "name": "DB_DATABASE",
        "value": "mydatabase"
      },
      {
        "name": "BROADCAST_DRIVER",
        "value": "log"
      },
      {
        "name": "CACHE_DRIVER",
        "value": "file"
      },
      {
        "name": "QUEUE_CONNECTION",
        "value": "sync"
      },
      {
        "name": "SESSION_DRIVER",
        "value": "database"
      },
      {
        "name": "SESSION_LIFETIME",
        "value": "10080"
      },
      {
        "name": "REDIS_HOST",
        "value": "127.0.0.1"
      },
      {
        "name": "REDIS_PASSWORD",
        "value": ""
      },
      {
        "name": "REDIS_PORT",
        "value": "6379"
      }
    ]
    },
    {
      "name": "nginx",
      "image": "",
      "cpu": 128,
      "memory": 256,
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-region": "ap-southeast-1",
          "awslogs-group": "/handson/ecs",
          "awslogs-stream-prefix": "nginx"
        }
      }
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "cpu": "256",
  "memory": "512",
  "networkMode": "awsvpc",
  "executionRoleArn": "arn:aws:iam::xxxxxxxxxxx:role/handson-TaskExecution"
}

我還在 ECS 控制台上創建了新任務並運行env以查看我的環境變量是否設置在應用容器中。 並確認它們實際上已經設置好了!

我很困惑為什么我的 Laravel 應用程序未處於調試模式並且在 Cloudwatch 日志中看不到我的Laravel日志。

回答我自己

我不應該將 php artisan config:cache 添加到應用程序 Dockerfile

FROM php:8.0-fpm-buster
SHELL ["/bin/bash", "-oeux", "pipefail", "-c"]

ENV TZ=UTC \
    # locale
    LANG=en_US.UTF-8 \
    LANGUAGE=en_US:en \
    LC_ALL=en_US.UTF-8 \
    # composer environment
    COMPOSER_ALLOW_SUPERUSER=1 \
    COMPOSER_HOME=/composer

COPY --from=composer:2.0 /usr/bin/composer /usr/bin/composer

RUN apt-get update && \
    apt-get -y install git libicu-dev libonig-dev libzip-dev unzip locales && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    locale-gen en_US.UTF-8 && \
    localedef -f UTF-8 -i en_US en_US.UTF-8 && \
    mkdir /var/run/php-fpm && \
    docker-php-ext-install intl pdo_mysql zip bcmath && \
    composer config -g process-timeout 3600 && \
    composer config -g repos.packagist composer https://packagist.org

# Python Install
# RUN apt-get update && apt install -y \
#     zlib1g-dev \
#     libssl-dev \
#     libreadline-dev \
#     libsqlite3-dev \
#     libbz2-dev \
#     libncurses5-dev \
#     libgdbm-dev \
#     liblzma-dev \
#     tk-dev zlibc \
#     libffi-dev \
#     zip \
#     unzip \
#     && apt-get clean \
#     && curl https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz | tar zx -C /usr/local/src/ \
#     && cd /usr/local/src/Python-3.7.5 \
#     && ./configure \
#     && make && make install \
#     && ln -s /usr/local/bin/python3 /usr/local/bin/python

# RUN curl https://s3.ap-southeast-1.amazonaws.com/amazon-ssm-ap-southeast-1/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/amazon-ssm-agent.deb \
#     && dpkg -i /tmp/amazon-ssm-agent.deb \
#     && cp /etc/amazon/ssm/seelog.xml.template /etc/amazon/ssm/seelog.xml

COPY ./docker/php/php-fpm.d/zzz-www.conf /usr/local/etc/php-fpm.d/zzz-www.conf
COPY ./docker/php/php.ini /usr/local/etc/php/php.ini

WORKDIR /var/www/app

COPY ./backend .

RUN composer install --no-progress --optimize-autoloader --no-dev \
    && chmod -R 777 storage
    # && php artisan config:cache \ 
    # && php artisan view:cache 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM