Files
Tg-job/compose.yml

181 lines
5.3 KiB
YAML

services:
bot:
image: mtuci-jobs/bot:0.1
container_name: bot
build:
context: mtucijobsbot
restart: always
depends_on:
postgres-bot:
condition: service_healthy
environment:
- DATABASE_URL=${db_bot_url}
- DB_NAME=${db_bot_name}
- DB_USER=${db_bot_user}
- DB_PASSWORD=${db_bot_password}
- DB_HOST=${db_bot_host}
- BOT_TOKEN=${bot_token}
- HOOKPORT=${hookport}
- PORT=${port}
- DOMAIN=${domain}
- WEB_APP=https://web.${domain}/
- WEB_APP_SEARCH=https://web.${domain}/search
- API=https://${domain}/api/
- MTUCI_TECH=${mtuci_tech}
- BEARER_TOKEN=${mtuci_tech_token}
networks:
- frontend
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.bot.rule=Host(`${domain}`)"
- "traefik.http.routers.bot.entrypoints=websecure"
- "traefik.http.routers.bot.tls.certresolver=${certresolver}"
- "traefik.http.services.bot.loadbalancer.server.port=3005"
- "traefik.http.routers.bot.service=bot"
- "traefik.http.routers.bot-resume.rule=Host(`${domain}`) && Path(`/api/resume/`)"
- "traefik.http.routers.bot-resume.service=bot-resume"
- "traefik.http.routers.bot-resume.entrypoints=websecure"
- "traefik.http.routers.bot-resume.tls.certresolver=${certresolver}"
- "traefik.http.services.bot-resume.loadbalancer.server.port=3006"
postgres-bot:
image: postgres:16.1-alpine3.19
container_name: postgres-bot
restart: always
environment:
- POSTGRES_USER=${db_bot_user}
- POSTGRES_PASSWORD=${db_bot_password}
- POSTGRES_DB=${db_bot_name}
- PGDATA=${db_bot_pgdata}
- POSTGRES_HOST_AUTH_METHOD=${db_bot_auth}
healthcheck:
test: pg_isready -U postgres
interval: 5s
timeout: 5s
retries: 5
volumes:
- postgres-bot:/data/postgres
networks:
- frontend
web:
container_name: web
image: mtuci-jobs/web:0.1
build:
context: mtucijobsweb
args:
- NEXT_PUBLIC_APP_BASE_URL=https://${domain}/api
- NEXT_PUBLIC_BOT_URL=https://${domain}
restart: always
networks:
- frontend
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.web.rule=Host(`web.${domain}`)"
- "traefik.http.routers.web.entrypoints=websecure"
- "traefik.http.routers.web.tls.certresolver=myresolver"
- "traefik.http.services.web.loadbalancer.server.port=3000"
web-jobs:
container_name: web-jobs
image: mtuci-jobs/web-jobs:0.1
build:
context: mtucijobsweb2
args:
- APP_BASE_URL=https://${domain}/api
restart: always
networks:
- frontend
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.web-jobs.rule=Host(`web-jobs.${domain}`)"
- "traefik.http.routers.web-jobs.entrypoints=websecure"
- "traefik.http.routers.web-jobs.tls.certresolver=myresolver"
- "traefik.http.services.web-jobs.loadbalancer.server.port=3000"
backend:
container_name: backend
image: mtuci-jobs/backend:0.1
build:
context: mtucijobsbackend
restart: always
environment:
- database_hostname=${db_backend_hostname}
- database_port=${db_backend_port}
- database_password=${db_backend_password}
- database_name=${db_backend_name}
- database_username=${db_backend_username}
- access_key=${minio_access_key}
- secret_key=${minio_secret_key}
- endpoint=${minio_endpoint}
- secret_key2=${secret_key2}
- algorithm=${algorithm}
- access_token_expire_minutes=${access_token_expire_minutes}
- refresh_token_expire_days=${refresh_token_expire_days}
- x_api_key=${x_api_key}
- LOG_LEVEL=DEBUG
depends_on:
- postgres-backend
- minio
networks:
- backend
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.backend.rule=Host(`${domain}`) && PathPrefix(`/api/`)"
- "traefik.http.middlewares.api-prefix.stripprefix.prefixes=/api/"
- "traefik.http.routers.backend.entrypoints=websecure"
- "traefik.http.routers.backend.tls.certresolver=myresolver"
- "traefik.http.services.backend.loadbalancer.server.port=8000"
- "traefik.http.routers.backend.middlewares=api-prefix"
postgres-backend:
container_name: postgres-backend
image: postgres:16.1-alpine3.19
restart: always
environment:
- POSTGRES_PASSWORD=${db_backend_password}
- POSTGRES_DB=${db_backend_name}
healthcheck:
test: pg_isready -U postgres
interval: 5s
timeout: 5s
retries: 5
volumes:
- postgres-backend:/var/lib/postgresql/data
networks:
- backend
minio:
container_name: minio
image: minio/minio:latest
command: server --console-address ":9001" /data/
restart: always
environment:
MINIO_ROOT_USER: ${minio_access_key}
MINIO_ROOT_PASSWORD: ${minio_secret_key}
volumes:
- minio-storage:/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
networks:
- backend
volumes:
postgres-backend:
minio-storage:
postgres-bot:
networks:
backend:
external: false
frontend:
external: false
proxy:
external: true