[英]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.