Consolidate MangaCircus app, scraper, and Compose baseline
This commit is contained in:
1 parent
cfb2d79103
commit
eef4ffa07c
103 files changed
+9316
-172
No files matched your search
+117
-14
@@ -1,15 +1,118 @@
|
||||
services:
|
||||
mangacircus:
|
||||
build: .
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- ./library:/library:ro # your manga folders (read-only is fine)
|
||||
- mangacircus-data:/data # users, progress, votes, scan cache
|
||||
environment:
|
||||
SIGNUP: closed # "open" lets anyone create an account
|
||||
SCAN_INTERVAL: 10 # minutes between automatic rescans (0 = off)
|
||||
restart: unless-stopped
|
||||
name: mangacircus
|
||||
|
||||
volumes:
|
||||
mangacircus-data:
|
||||
x-app: &app
|
||||
image: ${APP_IMAGE:-mangacircus:local}
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
VCS_REF: ${VCS_REF:-development}
|
||||
init: true
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 90s
|
||||
read_only: true
|
||||
tmpfs: [/tmp]
|
||||
security_opt: [no-new-privileges:true]
|
||||
cap_drop: [ALL]
|
||||
secrets: [scraper_token]
|
||||
logging:
|
||||
driver: local
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
|
||||
services:
|
||||
reader:
|
||||
<<: *app
|
||||
command: [node, runtime/launch.js, reader]
|
||||
ports: ["${READER_BIND:-127.0.0.1}:${READER_PORT:-8080}:8080"]
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${LIBRARY_PATH:-./library}
|
||||
target: /library
|
||||
read_only: true
|
||||
bind: {create_host_path: false}
|
||||
- type: bind
|
||||
source: ${DATA_PATH:-./data}
|
||||
target: /data
|
||||
bind: {create_host_path: false}
|
||||
environment:
|
||||
PORT: "8080"
|
||||
DATA: /data
|
||||
LIBRARY: /library
|
||||
TZ: ${TZ:-Europe/Berlin}
|
||||
SIGNUP: closed
|
||||
SCAN_INTERVAL: "10"
|
||||
COOKIE_SECURE: ${COOKIE_SECURE:-0}
|
||||
SCRAPER_URL: http://scraper:8091
|
||||
SENTINEL_URL: http://sentinel:8092
|
||||
SCRAPER_TOKEN_FILE: /run/secrets/scraper_token
|
||||
networks: [backend, egress]
|
||||
healthcheck:
|
||||
test: [CMD, node, tools/healthcheck.js, reader]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
start_period: 60s
|
||||
retries: 3
|
||||
|
||||
scraper:
|
||||
<<: *app
|
||||
command: [node, runtime/launch.js, scraper]
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${LIBRARY_PATH:-./library}
|
||||
target: /library
|
||||
bind: {create_host_path: false}
|
||||
- type: bind
|
||||
source: ${SCRAPER_DATA_PATH:-./data/scraper}
|
||||
target: /data/scraper
|
||||
bind: {create_host_path: false}
|
||||
environment:
|
||||
DATA: /data
|
||||
LIBRARY: /library
|
||||
SCRAPER_DATA: /data/scraper
|
||||
METADATA_CACHE: /data/scraper/metadata/anilist
|
||||
TZ: ${TZ:-Europe/Berlin}
|
||||
SCRAPER_HOST: 0.0.0.0
|
||||
SCRAPER_PORT: "8091"
|
||||
SCRAPER_TOKEN_FILE: /run/secrets/scraper_token
|
||||
networks: [backend, egress]
|
||||
healthcheck:
|
||||
test: [CMD, node, tools/healthcheck.js, scraper]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
start_period: 60s
|
||||
retries: 3
|
||||
|
||||
sentinel:
|
||||
<<: *app
|
||||
command: [node, runtime/launch.js, sentinel]
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ${SENTINEL_DATA_PATH:-./data/sentinel}
|
||||
target: /data/sentinel
|
||||
bind: {create_host_path: false}
|
||||
environment:
|
||||
DATA: /data
|
||||
SENTINEL_DATA: /data/sentinel
|
||||
SENTINEL_HOST: 0.0.0.0
|
||||
SENTINEL_PORT: "8092"
|
||||
READER_URL: http://reader:8080
|
||||
SCRAPER_URL: http://scraper:8091
|
||||
SCRAPER_TOKEN_FILE: /run/secrets/scraper_token
|
||||
TZ: ${TZ:-Europe/Berlin}
|
||||
networks: [backend]
|
||||
healthcheck:
|
||||
test: [CMD, node, tools/healthcheck.js, sentinel]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
start_period: 60s
|
||||
retries: 3
|
||||
|
||||
networks:
|
||||
backend:
|
||||
internal: true
|
||||
egress: {}
|
||||
|
||||
secrets:
|
||||
scraper_token:
|
||||
file: ${SCRAPER_TOKEN_PATH:-./.secrets/scraper_token}
|
||||
Reference in new issue
Block a user