diff --git a/makefile b/makefile index ee0059a..80e946e 100644 --- a/makefile +++ b/makefile @@ -29,7 +29,6 @@ setup: start: @echo "🐳 Starting all services..." docker-compose up -d --build - @docker-compose exec -d notification-service php bin/console messenger:consume async ## run listener rabbit-listen: diff --git a/services/notification-service/Dockerfile b/services/notification-service/Dockerfile index bffbd58..1291bcb 100644 --- a/services/notification-service/Dockerfile +++ b/services/notification-service/Dockerfile @@ -23,6 +23,10 @@ RUN composer install --no-interaction --prefer-dist --no-scripts || true RUN chown -R www-data:www-data /var/www/html +# Copy startup script +COPY start.sh /start.sh +RUN chmod +x /start.sh + EXPOSE 9000 -CMD ["php-fpm", "-F", "-R"] +CMD ["/start.sh"] diff --git a/services/notification-service/config/packages/monolog.yaml b/services/notification-service/config/packages/monolog.yaml index 93cca9d..269f281 100644 --- a/services/notification-service/config/packages/monolog.yaml +++ b/services/notification-service/config/packages/monolog.yaml @@ -1,28 +1,63 @@ monolog: channels: - - messenger + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists - handlers: - main: - type: fingers_crossed - action_level: error - handler: nested - excluded_http_codes: [404, 405] - channels: ["!messenger"] +when@dev: + monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] - nested: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug +when@test: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug - console: - type: console - process_psr_3_messages: false - channels: ["!messenger", "!event"] - - # Логи Messenger в отдельный файл - messenger: - type: stream - path: "%kernel.logs_dir%/messenger.%kernel.environment%.log" - level: debug - channels: [messenger] +when@prod: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!deprecation"] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + nested: + type: stream + path: php://stderr + level: debug + formatter: monolog.formatter.json + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] + deprecation: + type: stream + channels: [deprecation] + path: php://stderr + formatter: monolog.formatter.json diff --git a/services/notification-service/start.sh b/services/notification-service/start.sh new file mode 100644 index 0000000..443c79c --- /dev/null +++ b/services/notification-service/start.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +echo "🚀 Starting Notification Service..." + +# Ждем пока RabbitMQ будет готов (без netcat) +echo "🐰 Waiting for RabbitMQ to be ready..." +while true; do + if php -r "\$c = @fsockopen('rabbitmq', 5672); if (\$c) { fclose(\$c); exit(0); } exit(1);"; then + echo "✅ RabbitMQ is ready!" + break + fi + echo "Waiting for RabbitMQ..." + sleep 2 +done + +# Запускаем PHP-FPM в фоне (для веб-запросов через nginx) +echo "📡 Starting PHP-FPM..." +php-fpm -F -R & + +# Ждем немного чтобы PHP-FPM запустился +sleep 3 + +# Запускаем Messenger worker (блокирующая команда) +echo "🔄 Starting Messenger worker..." +php bin/console messenger:consume async -vv > /var/www/html/var/log/messenger.log 2>&1 + +# Если worker упадет, контейнер завершится +echo "❌ Messenger worker stopped" diff --git a/services/notification-service/symfony.lock b/services/notification-service/symfony.lock index b1dcc47..bd9fb66 100644 --- a/services/notification-service/symfony.lock +++ b/services/notification-service/symfony.lock @@ -89,7 +89,7 @@ "repo": "github.com/symfony/recipes", "branch": "main", "version": "3.7", - "ref": "aff23899c4440dd995907613c1dd709b6f59503f" + "ref": "f5f5f3e4c23f5349796b7de587f19c51e7104299" }, "files": [ "config/packages/monolog.yaml" diff --git a/services/user-service/composer.json b/services/user-service/composer.json index 2960673..e870f38 100644 --- a/services/user-service/composer.json +++ b/services/user-service/composer.json @@ -28,6 +28,7 @@ "symfony/flex": "^2.8.2", "symfony/framework-bundle": "7.3.*", "symfony/messenger": "7.3.*", + "symfony/monolog-bundle": "^3.10", "symfony/property-access": "7.3.*", "symfony/property-info": "7.3.*", "symfony/runtime": "7.3.*", diff --git a/services/user-service/config/bundles.php b/services/user-service/config/bundles.php index bae9815..a9e5a68 100644 --- a/services/user-service/config/bundles.php +++ b/services/user-service/config/bundles.php @@ -8,4 +8,5 @@ Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], ApiPlatform\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], ]; diff --git a/services/user-service/config/packages/monolog.yaml b/services/user-service/config/packages/monolog.yaml new file mode 100644 index 0000000..269f281 --- /dev/null +++ b/services/user-service/config/packages/monolog.yaml @@ -0,0 +1,63 @@ +monolog: + channels: + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists + +when@dev: + monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] + +when@test: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + +when@prod: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!deprecation"] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + nested: + type: stream + path: php://stderr + level: debug + formatter: monolog.formatter.json + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] + deprecation: + type: stream + channels: [deprecation] + path: php://stderr + formatter: monolog.formatter.json diff --git a/services/user-service/symfony.lock b/services/user-service/symfony.lock index f8217ab..be11788 100644 --- a/services/user-service/symfony.lock +++ b/services/user-service/symfony.lock @@ -141,6 +141,18 @@ "config/packages/messenger.yaml" ] }, + "symfony/monolog-bundle": { + "version": "3.10", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.7", + "ref": "f5f5f3e4c23f5349796b7de587f19c51e7104299" + }, + "files": [ + "config/packages/monolog.yaml" + ] + }, "symfony/property-info": { "version": "7.3", "recipe": {