2026-01-20 16:40:08 +00:00
|
|
|
services:
|
2026-01-20 18:08:11 +00:00
|
|
|
# Run scraper once (for manual triggering)
|
2026-01-20 16:40:08 +00:00
|
|
|
scraper:
|
|
|
|
|
build: .
|
|
|
|
|
container_name: job-scraper
|
|
|
|
|
volumes:
|
|
|
|
|
- ./data:/app/data
|
|
|
|
|
- ./config.yaml:/app/config.yaml:ro
|
2026-01-20 18:27:17 +00:00
|
|
|
- /home/gruberb/.msmtprc:/root/.msmtprc:ro
|
2026-01-20 16:40:08 +00:00
|
|
|
environment:
|
|
|
|
|
- TZ=America/Toronto
|
|
|
|
|
|
|
|
|
|
# Scheduled scraper - runs daily at 9 AM
|
|
|
|
|
scraper-scheduled:
|
|
|
|
|
build: .
|
|
|
|
|
container_name: job-scraper-scheduled
|
|
|
|
|
volumes:
|
|
|
|
|
- ./data:/app/data
|
|
|
|
|
- ./config.yaml:/app/config.yaml:ro
|
2026-01-20 18:27:17 +00:00
|
|
|
- /home/gruberb/.msmtprc:/root/.msmtprc:ro
|
2026-01-20 16:40:08 +00:00
|
|
|
environment:
|
|
|
|
|
- TZ=America/Toronto
|
2026-01-29 16:24:44 +00:00
|
|
|
- PYTHONUNBUFFERED=1
|
2026-01-20 16:40:08 +00:00
|
|
|
command: ["python", "main.py", "--schedule"]
|
|
|
|
|
restart: unless-stopped
|
2026-01-20 18:08:11 +00:00
|
|
|
logging:
|
|
|
|
|
driver: json-file
|
|
|
|
|
options:
|
|
|
|
|
max-size: "10m"
|
|
|
|
|
max-file: "3"
|
2026-01-20 16:40:08 +00:00
|
|
|
|
|
|
|
|
# Web dashboard - lightweight static file server
|
|
|
|
|
dashboard:
|
|
|
|
|
image: nginx:alpine
|
|
|
|
|
container_name: job-dashboard
|
|
|
|
|
ports:
|
2026-01-20 18:08:11 +00:00
|
|
|
- "127.0.0.1:8085:80"
|
2026-01-20 16:40:08 +00:00
|
|
|
volumes:
|
|
|
|
|
- ./data:/usr/share/nginx/html:ro
|
|
|
|
|
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
|
|
|
|
restart: unless-stopped
|
2026-01-20 18:08:11 +00:00
|
|
|
logging:
|
|
|
|
|
driver: json-file
|
|
|
|
|
options:
|
|
|
|
|
max-size: "10m"
|
|
|
|
|
max-file: "3"
|