From b70e18545056adee1eff8981d433f4e8f1b5b53f Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Wed, 15 Jul 2020 15:49:10 +0300 Subject: [PATCH] Added functions worker standalone container --- Dockerfile | 1 + Dockerfile.alpine | 1 + Dockerfile.php8 | 1 + Dockerfile.swoole | 1 + app/controllers/api/functions.php | 4 +++- app/workers/functions.php | 13 +++++++++---- bin/worker-functions | 3 +++ docker-compose.swoole.yml | 19 +++++++++++++++++++ docker-compose.yml | 19 +++++++++++++++++++ docker/supervisord.conf | 4 ++-- 10 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 bin/worker-functions diff --git a/Dockerfile b/Dockerfile index 6810b4c4a..5fd69f865 100755 --- a/Dockerfile +++ b/Dockerfile @@ -146,6 +146,7 @@ RUN chmod +x /usr/local/bin/test RUN chmod +x /usr/local/bin/worker-audits RUN chmod +x /usr/local/bin/worker-certificates RUN chmod +x /usr/local/bin/worker-deletes +RUN chmod +x /usr/local/bin/worker-functions RUN chmod +x /usr/local/bin/worker-mails RUN chmod +x /usr/local/bin/worker-tasks RUN chmod +x /usr/local/bin/worker-usage diff --git a/Dockerfile.alpine b/Dockerfile.alpine index d6714c8ec..e56afcf4b 100755 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -146,6 +146,7 @@ RUN chmod +x /usr/local/bin/test RUN chmod +x /usr/local/bin/worker-audits RUN chmod +x /usr/local/bin/worker-certificates RUN chmod +x /usr/local/bin/worker-deletes +RUN chmod +x /usr/local/bin/worker-functions RUN chmod +x /usr/local/bin/worker-mails RUN chmod +x /usr/local/bin/worker-tasks RUN chmod +x /usr/local/bin/worker-usage diff --git a/Dockerfile.php8 b/Dockerfile.php8 index aee2a09ae..bcf58ccbf 100755 --- a/Dockerfile.php8 +++ b/Dockerfile.php8 @@ -146,6 +146,7 @@ RUN chmod +x /usr/local/bin/test RUN chmod +x /usr/local/bin/worker-audits RUN chmod +x /usr/local/bin/worker-certificates RUN chmod +x /usr/local/bin/worker-deletes +RUN chmod +x /usr/local/bin/worker-functions RUN chmod +x /usr/local/bin/worker-mails RUN chmod +x /usr/local/bin/worker-tasks RUN chmod +x /usr/local/bin/worker-usage diff --git a/Dockerfile.swoole b/Dockerfile.swoole index 6810b4c4a..5fd69f865 100755 --- a/Dockerfile.swoole +++ b/Dockerfile.swoole @@ -146,6 +146,7 @@ RUN chmod +x /usr/local/bin/test RUN chmod +x /usr/local/bin/worker-audits RUN chmod +x /usr/local/bin/worker-certificates RUN chmod +x /usr/local/bin/worker-deletes +RUN chmod +x /usr/local/bin/worker-functions RUN chmod +x /usr/local/bin/worker-mails RUN chmod +x /usr/local/bin/worker-tasks RUN chmod +x /usr/local/bin/worker-usage diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index f33df428a..567e80e9f 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -435,7 +435,9 @@ App::post('/v1/functions/:functionId/executions') } if((bool)$async) { - + // Issue a TLS certificate when domain is verified + Resque::enqueue('v1-functions', 'FunctionsV1', [ + ]); } $response diff --git a/app/workers/functions.php b/app/workers/functions.php index 3ab9a3ba2..412d9cd4b 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -2,8 +2,6 @@ use Utopia\CLI\Console; use Utopia\Config\Config; -use Appwrite\Database\Database; -use Appwrite\Database\Validator\Authorization; require_once __DIR__.'/../init.php'; @@ -13,7 +11,9 @@ Console::success(APP_NAME.' functions worker v1 has started'); $environments = Config::getParam('environments'); -foreach($environments as $environment) { +$warmupStart = microtime(true); + +foreach($environments as $environment) { // Warmup: make sure images are ready to run fast 🚀 $stdout = ''; $stderr = ''; @@ -22,7 +22,7 @@ foreach($environments as $environment) { Console::execute('docker pull '.$environment['image'], null, $stdout, $stderr); if(!empty($stdout)) { - Console::success($stdout); + Console::log($stdout); } if(!empty($stderr)) { @@ -30,6 +30,11 @@ foreach($environments as $environment) { } } +$warmupEnd = microtime(true); +$warmupTime = $warmupEnd - $warmupStart; + +Console::success('Finished warmup in '.$warmupTime.' seconds'); + class FunctionsV1 { public $args = []; diff --git a/bin/worker-functions b/bin/worker-functions new file mode 100644 index 000000000..55290c992 --- /dev/null +++ b/bin/worker-functions @@ -0,0 +1,3 @@ +#!/bin/bash + +QUEUE='v1-functions' APP_INCLUDE='/usr/src/code/app/workers/functions.php' REDIS_BACKEND="${_APP_REDIS_HOST}:${_APP_REDIS_PORT}" php /usr/src/code/vendor/bin/resque -dopcache.preload=opcache.preload=/usr/src/code/app/preload.php \ No newline at end of file diff --git a/docker-compose.swoole.yml b/docker-compose.swoole.yml index 718e04c7b..fce6c957d 100644 --- a/docker-compose.swoole.yml +++ b/docker-compose.swoole.yml @@ -210,6 +210,25 @@ services: - _APP_DB_USER - _APP_DB_PASS + appwrite-worker-functions: + entrypoint: worker-functions + container_name: appwrite-worker-functions + build: + context: . + restart: unless-stopped + networks: + - appwrite + depends_on: + - redis + - mariadb + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - appwrite-functions:/storage/functions:rw + environment: + - _APP_ENV + - _APP_REDIS_HOST + - _APP_REDIS_PORT + appwrite-worker-mails: entrypoint: worker-mails container_name: appwrite-worker-mails diff --git a/docker-compose.yml b/docker-compose.yml index 718e04c7b..fce6c957d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -210,6 +210,25 @@ services: - _APP_DB_USER - _APP_DB_PASS + appwrite-worker-functions: + entrypoint: worker-functions + container_name: appwrite-worker-functions + build: + context: . + restart: unless-stopped + networks: + - appwrite + depends_on: + - redis + - mariadb + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - appwrite-functions:/storage/functions:rw + environment: + - _APP_ENV + - _APP_REDIS_HOST + - _APP_REDIS_PORT + appwrite-worker-mails: entrypoint: worker-mails container_name: appwrite-worker-mails diff --git a/docker/supervisord.conf b/docker/supervisord.conf index 3ebbc6616..4d3361cc9 100644 --- a/docker/supervisord.conf +++ b/docker/supervisord.conf @@ -168,11 +168,11 @@ stderr_logfile=/dev/stderr stderr_logfile_maxbytes = 0 [program:v1-functions] -command=php /usr/share/nginx/html/vendor/bin/resque +command=php /usr/src/code/vendor/bin/resque autostart=true autorestart=true priority=10 -environment=QUEUE='v1-functions',APP_INCLUDE='/usr/share/nginx/html/app/workers/functions.php',REDIS_BACKEND='%(ENV__APP_REDIS_HOST)s:%(ENV__APP_REDIS_PORT)s' +environment=QUEUE='v1-functions',APP_INCLUDE='/usr/src/code/app/workers/functions.php',REDIS_BACKEND='%(ENV__APP_REDIS_HOST)s:%(ENV__APP_REDIS_PORT)s' stdout_events_enabled=true stderr_events_enabled=true stopsignal=QUIT