copied the code from the working repo
This commit is contained in:
181
compose.yml
Normal file
181
compose.yml
Normal file
@@ -0,0 +1,181 @@
|
||||
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
|
||||
Reference in New Issue
Block a user