Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2860d2e949 | ||
|
|
ad2bbfd48c | ||
|
|
5e306c6740 | ||
|
|
56129de3f9 | ||
|
|
22b2b46da5 | ||
|
|
7cc48ffc73 | ||
|
|
adb79db8f5 | ||
|
|
9ca87af938 | ||
|
|
b01840b111 | ||
|
|
1759b6dfdc | ||
|
|
2d3bc35e45 | ||
|
|
69f07b57ce | ||
|
|
b86028acee | ||
|
|
b67781fe23 | ||
|
|
6920b82684 | ||
|
|
0f291aa147 |
@@ -12,3 +12,4 @@ phpstan.dist.neon
|
||||
phpunit.dist.xml
|
||||
nomad.deploy.hcl
|
||||
deployment.properties
|
||||
var/download/*
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
# torsearch-app is built from this base
|
||||
export APP_FRANKENPHP_TAG=php8.4
|
||||
|
||||
docker buildx build --platform=linux/amd64 -f docker/Dockerfile.base.app -t code.caldwell.digital/home/torsearch-base:${APP_FRANKENPHP_TAG} -t code.caldwell.digital/home/torsearch-base:latest --build-arg "FRANKENPHP_TAG=${APP_FRANKENPHP_TAG}" .
|
||||
#docker buildx build --platform=linux/amd64,linux/arm64 -f docker/Dockerfile.base.app -t code.caldwell.digital/home/torsearch-base:${APP_FRANKENPHP_TAG} -t code.caldwell.digital/home/torsearch-base:latest --build-arg "FRANKENPHP_TAG=${APP_FRANKENPHP_TAG}" .
|
||||
docker build -f docker/Dockerfile.base.app -t code.caldwell.digital/home/torsearch-base:${APP_FRANKENPHP_TAG} -t code.caldwell.digital/home/torsearch-base:latest --build-arg "FRANKENPHP_TAG=${APP_FRANKENPHP_TAG}" .
|
||||
docker push code.caldwell.digital/home/torsearch-base:${APP_FRANKENPHP_TAG}
|
||||
docker push code.caldwell.digital/home/torsearch-base:latest
|
||||
|
||||
# torsearch-worker & torsearch-scheduler are built from this base
|
||||
export WORKER_FRANKENPHP_TAG=php8.4-alpine
|
||||
|
||||
docker buildx build --platform=linux/amd64 -f docker/Dockerfile.base.worker -t code.caldwell.digital/home/torsearch-base-worker:${WORKER_FRANKENPHP_TAG} -t code.caldwell.digital/home/torsearch-base-worker:latest --build-arg "FRANKENPHP_TAG=${WORKER_FRANKENPHP_TAG}" .
|
||||
#docker buildx build --platform=linux/amd64,linux/arm64 -f docker/Dockerfile.base.worker -t code.caldwell.digital/home/torsearch-base-worker:${WORKER_FRANKENPHP_TAG} -t code.caldwell.digital/home/torsearch-base-worker:latest --build-arg "FRANKENPHP_TAG=${WORKER_FRANKENPHP_TAG}" .
|
||||
docker build -f docker/Dockerfile.base.worker -t code.caldwell.digital/home/torsearch-base-worker:${WORKER_FRANKENPHP_TAG} -t code.caldwell.digital/home/torsearch-base-worker:latest --build-arg "FRANKENPHP_TAG=${WORKER_FRANKENPHP_TAG}" .
|
||||
docker push code.caldwell.digital/home/torsearch-base-worker:${WORKER_FRANKENPHP_TAG}
|
||||
docker push code.caldwell.digital/home/torsearch-base-worker:latest
|
||||
|
||||
# torsearch-worker-supervisord
|
||||
export ALPINE_VERSION=3.22
|
||||
|
||||
#docker buildx build --platform=linux/amd64,linux/arm64 -f docker/Dockerfile.base.worker -t code.caldwell.digital/home/torsearch-base-worker-supervisord:latest --build-arg "ALPINE_VERSION=${ALPINE_VERSION}" .
|
||||
docker build -f docker/Dockerfile.base.worker -t code.caldwell.digital/home/torsearch-base-worker-supervisord:latest --build-arg "ALPINE_VERSION=${ALPINE_VERSION}" .
|
||||
docker push code.caldwell.digital/home/torsearch-base-worker-supervisord:latest
|
||||
|
||||
17
compose.yml
17
compose.yml
@@ -34,10 +34,8 @@ services:
|
||||
|
||||
worker:
|
||||
build:
|
||||
dockerfile: docker/Dockerfile.base.worker
|
||||
dockerfile: docker/Dockerfile.worker
|
||||
context: .
|
||||
args:
|
||||
FRANKENPHP_TAG: php8.4-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- $PWD:/app
|
||||
@@ -45,22 +43,19 @@ services:
|
||||
tty: true
|
||||
environment:
|
||||
TZ: America/Chicago
|
||||
command: php /app/bin/console messenger:consume async --time-limit=3600 -vv
|
||||
|
||||
|
||||
scheduler:
|
||||
build:
|
||||
dockerfile: docker/Dockerfile.base.worker
|
||||
dockerfile: docker/Dockerfile.scheduler
|
||||
context: .
|
||||
args:
|
||||
FRANKENPHP_TAG: php8.4-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- $PWD:/app
|
||||
- $PWD/var/download:/var/download
|
||||
tty: true
|
||||
environment:
|
||||
TZ: America/Chicago
|
||||
command: php /app/bin/console messenger:consume scheduler_monitor -vv
|
||||
tty: true
|
||||
WORKER_MONITOR: 2
|
||||
|
||||
|
||||
redis:
|
||||
@@ -96,6 +91,8 @@ services:
|
||||
image: adminer
|
||||
ports:
|
||||
- "8081:8080"
|
||||
environment:
|
||||
ADMINER_DEFAULT_SERVER: database
|
||||
|
||||
|
||||
volumes:
|
||||
|
||||
@@ -15,6 +15,26 @@ framework:
|
||||
max_retries: 1
|
||||
multiplier: 1
|
||||
|
||||
download:
|
||||
dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
|
||||
options:
|
||||
use_notify: true
|
||||
check_delayed_interval: 60000
|
||||
queue_name: download
|
||||
retry_strategy:
|
||||
max_retries: 3
|
||||
multiplier: 1
|
||||
|
||||
monitor:
|
||||
dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
|
||||
options:
|
||||
use_notify: true
|
||||
check_delayed_interval: 60000
|
||||
queue_name: monitor
|
||||
retry_strategy:
|
||||
max_retries: 1
|
||||
multiplier: 1
|
||||
|
||||
media_cache:
|
||||
dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
|
||||
options:
|
||||
@@ -36,12 +56,12 @@ framework:
|
||||
routing:
|
||||
# Route your messages to the transports
|
||||
# 'App\Message\YourMessage': async
|
||||
'App\Download\Action\Command\DownloadMediaCommand': async
|
||||
'App\Download\Action\Command\DownloadMediaCommand': download
|
||||
'App\Download\Action\Command\DownloadSeasonCommand': async
|
||||
'App\Monitor\Action\Command\MonitorTvEpisodeCommand': async
|
||||
'App\Monitor\Action\Command\MonitorTvSeasonCommand': async
|
||||
'App\Monitor\Action\Command\MonitorTvShowCommand': async
|
||||
'App\Monitor\Action\Command\MonitorMovieCommand': async
|
||||
'App\Monitor\Action\Command\MonitorTvEpisodeCommand': monitor
|
||||
'App\Monitor\Action\Command\MonitorTvSeasonCommand': monitor
|
||||
'App\Monitor\Action\Command\MonitorTvShowCommand': monitor
|
||||
'App\Monitor\Action\Command\MonitorMovieCommand': monitor
|
||||
'App\Torrentio\Action\Command\GetTvShowOptionsCommand': media_cache
|
||||
|
||||
# when@test:
|
||||
|
||||
@@ -13,8 +13,6 @@ services:
|
||||
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
||||
- mercure_data:/data
|
||||
- mercure_config:/config
|
||||
depends_on:
|
||||
- database
|
||||
|
||||
|
||||
worker:
|
||||
@@ -22,8 +20,6 @@ services:
|
||||
volumes:
|
||||
- /mnt/media/downloads/movies:/var/download/movies
|
||||
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
||||
restart: always
|
||||
command: -vv --time-limit=3600 --limit=10
|
||||
deploy:
|
||||
replicas: 2
|
||||
depends_on:
|
||||
@@ -35,23 +31,10 @@ services:
|
||||
volumes:
|
||||
- /mnt/media/downloads/movies:/var/download/movies
|
||||
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
||||
restart: always
|
||||
command: -vv
|
||||
depends_on:
|
||||
- app
|
||||
|
||||
|
||||
redis:
|
||||
image: redis:latest
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
command: redis-server --maxmemory 512MB
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
volumes:
|
||||
mysql:
|
||||
mercure_config:
|
||||
mercure_data:
|
||||
redis_data:
|
||||
|
||||
|
||||
@@ -1,19 +1,39 @@
|
||||
ARG FRANKENPHP_TAG
|
||||
#####
|
||||
# This version of Torsearch runs the scheduler, downloader, and worker
|
||||
# in a single container. Each process is managerd by supervisord
|
||||
# and can be configured via environment variables and more
|
||||
# than one of these containers cans till be run.
|
||||
#####
|
||||
ARG ALPINE_VERSION="3.22"
|
||||
FROM alpine:${ALPINE_VERSION} AS build_stage
|
||||
|
||||
FROM dunglas/frankenphp:${FRANKENPHP_TAG}
|
||||
RUN apk add --no-cache \
|
||||
curl \
|
||||
php84 \
|
||||
php84-ctype \
|
||||
php84-curl \
|
||||
php84-dom \
|
||||
php84-fileinfo \
|
||||
php84-fpm \
|
||||
php84-gd \
|
||||
php84-mbstring \
|
||||
php84-mysqli \
|
||||
php84-opcache \
|
||||
php84-openssl \
|
||||
php84-pdo_mysql \
|
||||
php84-tokenizer \
|
||||
supervisor
|
||||
|
||||
ENV SERVER_NAME=":80"
|
||||
ENV CADDY_GLOBAL_OPTIONS="auto_https off"
|
||||
ENV APP_RUNTIME="Runtime\\FrankenPhpSymfony\\Runtime"
|
||||
RUN ln -s /usr/bin/php84 /usr/bin/php
|
||||
|
||||
ARG APP_VERSION="0.dev"
|
||||
ENV APP_VERSION="${APP_VERSION}"
|
||||
RUN mkdir -p /etc/supervisor/conf.d
|
||||
|
||||
RUN install-php-extensions \
|
||||
pdo_mysql \
|
||||
gd \
|
||||
intl \
|
||||
zip \
|
||||
opcache
|
||||
# We start supervisord and supervisord starts
|
||||
# respective service in the configuration file.
|
||||
ENTRYPOINT ["/app/bin/console", "init:worker"]
|
||||
|
||||
# Message transports can be enabled by passing them as command options.
|
||||
# Inlcluding a number with the option will start that amount of processes
|
||||
# for the transport. Not supplying a number will default to 1.
|
||||
# --download --monitor OR --download 2 --monitor
|
||||
|
||||
RUN apk add --no-cache wget
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
FROM code.caldwell.digital/home/torsearch-base-worker:php8.4-alpine
|
||||
###
|
||||
# This version of Torsearch can run the scheduler, downloader, and
|
||||
# worker in one container. Each process is managerd by supervisord
|
||||
# and can be configured via environment variables, and more than
|
||||
# one of these containers can still be run.
|
||||
###
|
||||
|
||||
ARG APP_VERSION="0.0.0-dev"
|
||||
ENV APP_VERSION="${APP_VERSION}"
|
||||
# Default to latest, but should pass in a version
|
||||
ARG APP_VERSION="latest"
|
||||
|
||||
COPY . /app
|
||||
# Start with our base worker image
|
||||
FROM code.caldwell.digital/home/torsearch-base-worker-supervisord:latest
|
||||
|
||||
ENTRYPOINT [ "php", "/app/bin/console", "messenger:consume", "scheduler_monitor" ]
|
||||
# Set the APP_VERSION in the image
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
HEALTHCHECK --interval=3s --timeout=3s --retries=10 CMD return 0
|
||||
# Copy the actual application code from the previously built app
|
||||
COPY --chown=1000:1000 ./ /app
|
||||
|
||||
# To retain backwards compatibility, default to async & download transports
|
||||
CMD [ "--monitor" ]
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
FROM code.caldwell.digital/home/torsearch-base-worker:php8.4-alpine
|
||||
###
|
||||
# This version of Torsearch can run the scheduler, downloader, and
|
||||
# worker in one container. Each process is managerd by supervisord
|
||||
# and can be configured via environment variables, and more than
|
||||
# one of these containers can still be run.
|
||||
###
|
||||
|
||||
ARG APP_VERSION="0.0.0-dev"
|
||||
ENV APP_VERSION="${APP_VERSION}"
|
||||
# Default to latest, but should pass in a version
|
||||
ARG APP_VERSION="latest"
|
||||
|
||||
COPY . /app
|
||||
# Start with our base worker image
|
||||
FROM code.caldwell.digital/home/torsearch-base-worker-supervisord:latest
|
||||
|
||||
ENTRYPOINT [ "php", "/app/bin/console", "messenger:consume", "async" ]
|
||||
# Set the APP_VERSION in the image
|
||||
ENV APP_VERSION=${APP_VERSION}
|
||||
|
||||
HEALTHCHECK --interval=3s --timeout=3s --retries=10 CMD return 0
|
||||
# Copy the actual application code from the previously built app
|
||||
COPY --chown=1000:1000 ./ /app
|
||||
|
||||
# To retain backwards compatibility, default to async & download transports
|
||||
CMD [ "--async", "--download" ]
|
||||
|
||||
10
docker/worker/async.conf
Normal file
10
docker/worker/async.conf
Normal file
@@ -0,0 +1,10 @@
|
||||
[program:torsearch-worker]
|
||||
command=/app/bin/console messenger:consume async -vv --time-limit 3600
|
||||
numprocs=1
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
startretries=3
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
10
docker/worker/download.conf
Normal file
10
docker/worker/download.conf
Normal file
@@ -0,0 +1,10 @@
|
||||
[program:torsearch-downloader]
|
||||
command=/app/bin/console messenger:consume download -vv --time-limit 3600
|
||||
numprocs=1
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
startretries=3
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
10
docker/worker/monitor.conf
Normal file
10
docker/worker/monitor.conf
Normal file
@@ -0,0 +1,10 @@
|
||||
[program:torsearch-scheduler]
|
||||
command=/app/bin/console messenger:consume scheduler_monitor monitor -vv --time-limit 21600
|
||||
numprocs=1
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
startretries=3
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
5
docker/worker/supervisord.conf
Normal file
5
docker/worker/supervisord.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
logfile=/dev/null
|
||||
logfile_maxbytes=0
|
||||
pidfile=/run/supervisord.pid
|
||||
@@ -21,10 +21,7 @@ final class Version20250831013403 extends AbstractMigration
|
||||
{
|
||||
// this up() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE sessions
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE download CHANGE created_at created_at DATETIME NOT NULL, CHANGE updated_at updated_at DATETIME NOT NULL
|
||||
DROP TABLE IF EXISTS sessions
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE user_preference CHANGE preference_value preference_value VARCHAR(1024) DEFAULT NULL
|
||||
@@ -37,9 +34,6 @@ final class Version20250831013403 extends AbstractMigration
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE sessions (sess_id VARBINARY(128) NOT NULL, sess_data LONGBLOB NOT NULL, sess_lifetime INT UNSIGNED NOT NULL, sess_time INT UNSIGNED NOT NULL, INDEX sess_lifetime_idx (sess_lifetime), PRIMARY KEY(sess_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_bin` ENGINE = InnoDB COMMENT = ''
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE download CHANGE created_at created_at DATETIME DEFAULT NULL, CHANGE updated_at updated_at DATETIME DEFAULT NULL
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE user_preference CHANGE preference_value preference_value VARCHAR(255) DEFAULT NULL
|
||||
SQL);
|
||||
|
||||
35
migrations/Version20251102221034.php
Normal file
35
migrations/Version20251102221034.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Auto-generated Migration: Please modify to your needs!
|
||||
*/
|
||||
final class Version20251102221034 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
// this up() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE event_log ADD created_at DATETIME NULL, ADD updated_at DATETIME NULL
|
||||
SQL);
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
// this down() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE event_log DROP created_at, DROP updated_at
|
||||
SQL);
|
||||
}
|
||||
}
|
||||
90
src/Base/Framework/Command/InitWorker.php
Normal file
90
src/Base/Framework/Command/InitWorker.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace App\Base\Framework\Command;
|
||||
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Twig\Environment;
|
||||
|
||||
class InitWorker extends Command
|
||||
{
|
||||
public function __construct(
|
||||
private Environment $twig,
|
||||
) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function configure(): void
|
||||
{
|
||||
$this
|
||||
->setName('init:worker')
|
||||
->addOption('async', null, InputOption::VALUE_OPTIONAL, 'Run the async worker.',false)
|
||||
->addOption('download', null, InputOption::VALUE_OPTIONAL, 'Run the download worker.', false)
|
||||
->addOption('monitor', null, InputOption::VALUE_OPTIONAL, 'Run the monitor worker.', false)
|
||||
;
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
$configFile = $this->twig->render("config/supervisord.conf.twig", []);
|
||||
|
||||
if ($this->optionExists($input, $output, 'async')) {
|
||||
$configFile .= $this->twig->render("config/async.conf.twig", [
|
||||
'replicas' => $this->getOptionValue('async', $input),
|
||||
]) . "\n\n";
|
||||
}
|
||||
|
||||
if ($this->optionExists($input, $output, 'download')) {
|
||||
$configFile .= $this->twig->render("config/download.conf.twig", [
|
||||
'replicas' => $this->getOptionValue('download', $input),
|
||||
]). "\n\n";
|
||||
}
|
||||
|
||||
if ($this->optionExists($input, $output, 'monitor')) {
|
||||
$configFile .= $this->twig->render("config/monitor.conf.twig", [
|
||||
'replicas' => $this->getOptionValue('monitor', $input),
|
||||
]). "\n\n";
|
||||
}
|
||||
|
||||
if ("" !== $configFile) {
|
||||
$output->writeln("[init:worker] Writing /etc/supervisor/conf.d/supervisord.conf");
|
||||
file_put_contents("/etc/supervisor/conf.d/supervisord.conf", $configFile);
|
||||
|
||||
$output->writeln("[init:worker] Starting supervisord");
|
||||
shell_exec("/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf");
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
|
||||
$output->writeln("[init:worker] No workers selected. Exiting.");
|
||||
return Command::FAILURE;
|
||||
}
|
||||
|
||||
private function optionExists(InputInterface $input, OutputInterface $output, string $option): bool
|
||||
{
|
||||
if ($input->getOption($option) !== false) {
|
||||
$value = $input->getOption($option) ?? 1;
|
||||
$output->writeln("[init:worker] transport: $option // $value // input var");;
|
||||
return true;
|
||||
}
|
||||
|
||||
$optionKey = 'WORKER_' . strtoupper($option);
|
||||
if (array_key_exists($optionKey, $_SERVER) && $_SERVER[$optionKey] !== null && $_SERVER[$optionKey] !== '') {
|
||||
$output->writeln("[init:worker] transport: $option // $_SERVER[$optionKey] // env var");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private function getOptionValue(string $option, InputInterface $input): int
|
||||
{
|
||||
if ($input->getOption($option) !== false) {
|
||||
return $input->getOption($option) ?? 1;
|
||||
}
|
||||
|
||||
$optionKey = 'WORKER_' . strtoupper($option);
|
||||
return $_SERVER[$optionKey];
|
||||
}
|
||||
}
|
||||
@@ -6,10 +6,13 @@ use App\EventLog\Framework\Repository\EventLogRepository;
|
||||
use App\User\Framework\Entity\User;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Gedmo\Timestampable\Traits\TimestampableEntity;
|
||||
|
||||
#[ORM\Entity(repositoryClass: EventLogRepository::class)]
|
||||
class EventLog
|
||||
{
|
||||
use TimestampableEntity;
|
||||
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column(nullable: true)]
|
||||
|
||||
10
templates/config/async.conf.twig
Normal file
10
templates/config/async.conf.twig
Normal file
@@ -0,0 +1,10 @@
|
||||
[program:torsearch-worker]
|
||||
command=/app/bin/console messenger:consume async -vv --time-limit 3600
|
||||
numprocs={{ replicas|default(1) }}
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
startretries=3
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
10
templates/config/download.conf.twig
Normal file
10
templates/config/download.conf.twig
Normal file
@@ -0,0 +1,10 @@
|
||||
[program:torsearch-downloader]
|
||||
command=/app/bin/console messenger:consume download -vv --time-limit 3600
|
||||
numprocs={{ replicas|default(1) }}
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
startretries=3
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
10
templates/config/monitor.conf.twig
Normal file
10
templates/config/monitor.conf.twig
Normal file
@@ -0,0 +1,10 @@
|
||||
[program:torsearch-scheduler]
|
||||
command=/app/bin/console messenger:consume scheduler_monitor monitor -vv --time-limit 21600
|
||||
numprocs={{ replicas|default(1) }}
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=true
|
||||
startretries=3
|
||||
process_name=%(program_name)s_%(process_num)02d
|
||||
5
templates/config/supervisord.conf.twig
Normal file
5
templates/config/supervisord.conf.twig
Normal file
@@ -0,0 +1,5 @@
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
logfile=/dev/null
|
||||
logfile_maxbytes=0
|
||||
pidfile=/run/supervisord.pid
|
||||
Reference in New Issue
Block a user