Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 325e4e14a7 | |||
| f9017297f3 | |||
| 0c4def42a2 | |||
| 3100912927 | |||
| 07553a172f | |||
| a88da4f637 | |||
| a88f128ccb | |||
| b1ec344f42 | |||
| 1ee6db4668 |
3
.env
3
.env
@@ -38,6 +38,3 @@ MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
|||||||
###< symfony/messenger ###
|
###< symfony/messenger ###
|
||||||
|
|
||||||
REDIS_HOST=redis://redis
|
REDIS_HOST=redis://redis
|
||||||
|
|
||||||
MOVIES_PATH=/var/download/movies
|
|
||||||
TVSHOWS_PATH=/var/download/tvshows
|
|
||||||
|
|||||||
11
compose.yml
11
compose.yml
@@ -35,7 +35,16 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- $PWD:/app
|
- $PWD:/app
|
||||||
tty: true
|
tty: true
|
||||||
command: php /app/bin/console messenger:consume async -vv
|
command: php /app/bin/console messenger:consume async -vv --time-limit=3600 limit=10
|
||||||
|
|
||||||
|
|
||||||
|
scheduler:
|
||||||
|
build: .
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- $PWD:/app
|
||||||
|
command: php /app/bin/console messenger:consume scheduler_monitor -vv
|
||||||
|
tty: true
|
||||||
|
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
|
|||||||
@@ -8,10 +8,6 @@ services:
|
|||||||
MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeThisMercureHubJWTSecretKey!'
|
MERCURE_SUBSCRIBER_JWT_KEY: '!ChangeThisMercureHubJWTSecretKey!'
|
||||||
deploy:
|
deploy:
|
||||||
replicas: 2
|
replicas: 2
|
||||||
placement:
|
|
||||||
constraints:
|
|
||||||
- node.hostname != web03
|
|
||||||
- node.hostname != web03.caldwell.local
|
|
||||||
volumes:
|
volumes:
|
||||||
- /mnt/media/downloads/movies:/var/download/movies
|
- /mnt/media/downloads/movies:/var/download/movies
|
||||||
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
||||||
@@ -27,9 +23,9 @@ services:
|
|||||||
- /mnt/media/downloads/movies:/var/download/movies
|
- /mnt/media/downloads/movies:/var/download/movies
|
||||||
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
||||||
restart: always
|
restart: always
|
||||||
command: -vv
|
command: -vv --time-limit=3600 --limit=10
|
||||||
deploy:
|
deploy:
|
||||||
replicas: 4
|
replicas: 2
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
|
|
||||||
@@ -37,8 +33,10 @@ services:
|
|||||||
scheduler:
|
scheduler:
|
||||||
image: registry.caldwell.digital/home/torsearch-scheduler:${TAG}
|
image: registry.caldwell.digital/home/torsearch-scheduler:${TAG}
|
||||||
volumes:
|
volumes:
|
||||||
- ./downloads:/var/download
|
- /mnt/media/downloads/movies:/var/download/movies
|
||||||
|
- /mnt/media/downloads/tvshows:/var/download/tvshows
|
||||||
restart: always
|
restart: always
|
||||||
|
command: -vv
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,6 @@ COPY docker/app/Caddyfile /etc/frankenphp/Caddyfile
|
|||||||
|
|
||||||
ENTRYPOINT [ "/usr/local/bin/docker-entrypoint" ]
|
ENTRYPOINT [ "/usr/local/bin/docker-entrypoint" ]
|
||||||
|
|
||||||
CMD [ "frankenphp", "run", "--config", "/etc/caddy/Caddyfile" ]
|
CMD [ "frankenphp", "run", "--config", "/etc/frankenphp/Caddyfile" ]
|
||||||
|
|
||||||
HEALTHCHECK --interval=3s --timeout=3s --retries=10 CMD [ "php", "/app/bin/console", "startup:status" ]
|
HEALTHCHECK --interval=3s --timeout=3s --retries=10 CMD [ "php", "/app/bin/console", "startup:status" ]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM dunglas/frankenphp
|
FROM dunglas/frankenphp:php8.4-alpine
|
||||||
|
|
||||||
ENV SERVER_NAME=":80"
|
ENV SERVER_NAME=":80"
|
||||||
ENV CADDY_GLOBAL_OPTIONS="auto_https off"
|
ENV CADDY_GLOBAL_OPTIONS="auto_https off"
|
||||||
@@ -13,4 +13,6 @@ RUN install-php-extensions \
|
|||||||
|
|
||||||
COPY . /app
|
COPY . /app
|
||||||
|
|
||||||
ENTRYPOINT [ "php", "/app/bin/console", "messenger:consume", "schedule_monitor" ]
|
ENTRYPOINT [ "php", "/app/bin/console", "messenger:consume", "scheduler_monitor" ]
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=3s --timeout=3s --retries=10 CMD return 0
|
||||||
|
|||||||
@@ -4,12 +4,7 @@
|
|||||||
frankenphp {
|
frankenphp {
|
||||||
{$FRANKENPHP_CONFIG}
|
{$FRANKENPHP_CONFIG}
|
||||||
|
|
||||||
worker {
|
|
||||||
file ./public/index.php
|
|
||||||
num 20
|
|
||||||
env APP_RUNTIME Runtime\FrankenPhpSymfony\Runtime
|
|
||||||
{$FRANKENPHP_WORKER_CONFIG}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
129
nomad.deploy.hcl
Normal file
129
nomad.deploy.hcl
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
variable "image_tag" {
|
||||||
|
type = string
|
||||||
|
description = "Docker image tag to deploy."
|
||||||
|
default = "latest"
|
||||||
|
}
|
||||||
|
|
||||||
|
job "torsearch" {
|
||||||
|
datacenters = [ "home" ]
|
||||||
|
type = "service"
|
||||||
|
|
||||||
|
group "app" {
|
||||||
|
count = 2
|
||||||
|
|
||||||
|
update {
|
||||||
|
max_parallel = 4
|
||||||
|
min_healthy_time = "30s"
|
||||||
|
healthy_deadline = "3m"
|
||||||
|
auto_revert = true
|
||||||
|
}
|
||||||
|
|
||||||
|
network {
|
||||||
|
port "app" {
|
||||||
|
to = 80
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task "app" {
|
||||||
|
driver = "docker"
|
||||||
|
|
||||||
|
config {
|
||||||
|
image = "registry.caldwell.digital/home/torsearch-app:${var.image_tag}"
|
||||||
|
ports = ["app"]
|
||||||
|
}
|
||||||
|
|
||||||
|
env {
|
||||||
|
MERCURE_PUBLISHER_JWT_KEY = "!ChangeThisMercureHubJWTSecretKey!"
|
||||||
|
MERCURE_SUBSCRIBER_JWT_KEY = "!ChangeThisMercureHubJWTSecretKey!"
|
||||||
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "torsearch-app"
|
||||||
|
provider = "nomad"
|
||||||
|
port = "app"
|
||||||
|
|
||||||
|
meta {
|
||||||
|
nomad_ingress_enabled = true
|
||||||
|
nomad_ingress_hostname = "torsearch-nomad.caldwell.digital"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group "worker" {
|
||||||
|
count = 2
|
||||||
|
update {
|
||||||
|
max_parallel = 4
|
||||||
|
min_healthy_time = "30s"
|
||||||
|
healthy_deadline = "3m"
|
||||||
|
auto_revert = true
|
||||||
|
}
|
||||||
|
|
||||||
|
volume "media" {
|
||||||
|
type = "host"
|
||||||
|
source = "media"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
task "worker" {
|
||||||
|
driver = "docker"
|
||||||
|
|
||||||
|
volume_mount {
|
||||||
|
volume = "media"
|
||||||
|
destination = "/var/download"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
config {
|
||||||
|
image = "registry.caldwell.digital/home/torsearch-worker:${var.image_tag}"
|
||||||
|
args = [
|
||||||
|
"-vv"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "torsearch-worker"
|
||||||
|
provider = "nomad"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group "scheduler" {
|
||||||
|
count = 1
|
||||||
|
|
||||||
|
update {
|
||||||
|
max_parallel = 2
|
||||||
|
min_healthy_time = "30s"
|
||||||
|
healthy_deadline = "3m"
|
||||||
|
auto_revert = true
|
||||||
|
}
|
||||||
|
|
||||||
|
volume "media" {
|
||||||
|
type = "host"
|
||||||
|
source = "media"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
task "scheduler" {
|
||||||
|
driver = "docker"
|
||||||
|
|
||||||
|
volume_mount {
|
||||||
|
volume = "media"
|
||||||
|
destination = "/var/download"
|
||||||
|
read_only = false
|
||||||
|
}
|
||||||
|
|
||||||
|
config {
|
||||||
|
image = "registry.caldwell.digital/home/torsearch-scheduler:${var.image_tag}"
|
||||||
|
args = [
|
||||||
|
"-vv"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "torsearch-scheduler"
|
||||||
|
provider = "nomad"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user