Explorar el Código

[php] Laravel with RoadRunner fixed and updated (#10053)

Joan Miquel hace 3 semanas
padre
commit
f26732f7fc

+ 7 - 0
frameworks/PHP/laravel/config/octane.php

@@ -0,0 +1,7 @@
+<?php
+
+return [
+    'octane' => [
+        'max_requests' => 10000, // Reload workers after requests
+    ],
+];

+ 22 - 10
frameworks/PHP/laravel/deploy/roadrunner/.rr.yaml

@@ -1,23 +1,35 @@
-# see https://roadrunner.dev/docs/intro-config
+# see https://docs.roadrunner.dev/docs/general/config
+# https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml
+
 version: "3"
-#https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml
 
-server:
-  command: "php ./vendor/bin/rr-worker start --relay-dsn unix:///usr/local/var/run/rr-rpc.sock"
-  relay: "unix:///usr/local/var/run/rr-rpc.sock"
-logs:
-  mode: production
-  level: error
 http:
   address: 0.0.0.0:8080
-  middleware: ["headers"]
   pool:
-    #max_jobs: 64 # feel free to change this
+    num_workers: 0
+    max_jobs: 0
     supervisor:
       exec_ttl: 60s
   headers:
     response:
       Server: "RoadRunner"
+  middleware: ["headers"]
+
+server:
+  command: "php /laravel/vendor/bin/roadrunner-worker"
+  #command: "php /laravel/vendor/bin/roadrunner-worker start --relay-dsn unix:///usr/local/var/run/rr-rpc.sock"
+  #relay: "unix:///usr/local/var/run/rr-rpc.sock"
 
+  env:
+    - APP_ENV: production
+    - APP_BASE_PATH: "/laravel"
+    - LARAVEL_OCTANE: "1"
 
+rpc:
+  listen: tcp://127.0.0.1:6001
 
+logs:
+  mode: production
+  level: error
+  output: stdout
+  #encoding: json

+ 0 - 45
frameworks/PHP/laravel/deploy/roadrunner/composer.json

@@ -1,45 +0,0 @@
-{
-    "name": "laravel/laravel",
-    "type": "project",
-    "description": "The Laravel Framework.",
-    "keywords": [
-        "framework",
-        "laravel"
-    ],
-    "license": "MIT",
-    "require": {
-        "laravel/framework": "^9",
-        "nyholm/psr7": "*",
-        "spiral/roadrunner": "^2.11",
-        "spiral/roadrunner-laravel": "^5.9"
-    },
-    "config": {
-        "optimize-autoloader": true,
-        "preferred-install": "dist",
-        "sort-packages": true
-    },
-    "extra": {
-        "laravel": {
-            "dont-discover": []
-        }
-    },
-    "autoload": {
-        "psr-4": {
-            "App\\": "app/"
-        }
-    },
-    "minimum-stability": "stable",
-    "prefer-stable": true,
-    "scripts": {
-        "post-autoload-dump": [
-            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
-            "@php artisan package:discover --ansi"
-        ],
-        "post-root-package-install": [
-            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
-        ],
-        "post-create-project-cmd": [
-            "@php artisan key:generate --ansi"
-        ]
-    }
-}

+ 10 - 15
frameworks/PHP/laravel/laravel-roadrunner.dockerfile

@@ -1,10 +1,10 @@
-FROM php:8.3-cli
+FROM php:8.4-cli
 
 RUN docker-php-ext-install pdo_mysql pcntl opcache sockets > /dev/null
 
 RUN echo "opcache.enable_cli=1" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
-#RUN echo "opcache.jit=1205" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
-#RUN echo "opcache.jit_buffer_size=128M" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
+RUN echo "opcache.jit=1205" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
+RUN echo "opcache.jit_buffer_size=128M" >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
 
 WORKDIR /laravel
 COPY --link . .
@@ -18,21 +18,16 @@ RUN mkdir -p bootstrap/cache \
 RUN apt-get update > /dev/null && \
     apt-get install -yqq curl unzip > /dev/null
 
-COPY --from=composer/composer:latest-bin --link /composer /usr/local/bin/composer
+RUN pecl install protobuf > /dev/null && echo "extension=protobuf.so" > /usr/local/etc/php/conf.d/protobuf.ini
 
-COPY --link deploy/roadrunner/composer.json .
-COPY --link deploy/roadrunner/.rr.yaml .
+COPY --from=composer/composer:latest-bin --link /composer /usr/local/bin/composer
 
-RUN composer install -a --no-dev --quiet
+RUN composer require laravel/octane --update-no-dev --no-scripts --quiet
+RUN php artisan octane:install --server="roadrunner"
 RUN php artisan optimize
 
-# install roadrunner
-COPY --from=ghcr.io/roadrunner-server/roadrunner:2023.3 --link /usr/bin/rr /usr/local/bin/rr
-
-RUN php artisan vendor:publish --provider='Spiral\RoadRunnerLaravel\ServiceProvider' --tag=config
-RUN rr -v
-
 EXPOSE 8080
 
-# CMD bash
-CMD rr serve -c .rr.yaml
+# https://artisan.page/12.x/
+#ENTRYPOINT ["php", "artisan", "octane:roadrunner", "--host=0.0.0.0", "--port=8080", "--workers=auto", "--max-requests=10000", "--rr-config=/laravel/deploy/roadrunner/.rr.yaml"]
+ENTRYPOINT ["/laravel/rr", "serve", "-c", "/laravel/deploy/roadrunner/.rr.yaml"]