Files
shorty/docker-compose.yml
2026-02-07 11:03:53 -03:00

113 lines
3.9 KiB
YAML

services:
kutt_db:
image: postgres:16-alpine
restart: unless-stopped
networks:
- backend
volumes:
- /mnt/config/docker/kutt/postgres:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${DB_USER:-kutt}
POSTGRES_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD}
POSTGRES_DB: ${DB_NAME:-kutt}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-kutt} -d ${DB_NAME:-kutt}"]
interval: 10s
timeout: 5s
retries: 5
kutt_redis:
image: redis:7-alpine
restart: unless-stopped
networks:
- backend
volumes:
- /mnt/config/docker/kutt/redis:/data
command: redis-server --appendonly yes
kutt:
image: kutt/kutt:latest
restart: unless-stopped
networks:
- marina-net
- backend
depends_on:
kutt_db:
condition: service_healthy
kutt_redis:
condition: service_started
environment:
DB_CLIENT: pg
DB_HOST: kutt_db
DB_PORT: "5432"
DB_USER: ${DB_USER:-kutt}
DB_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD}
DB_NAME: ${DB_NAME:-kutt}
REDIS_ENABLED: "true"
REDIS_HOST: kutt_redis
REDIS_PORT: "6379"
DEFAULT_DOMAIN: mifi.me
NODE_ENV: production
JWT_SECRET: ${JWT_SECRET:?Set JWT_SECRET}
labels:
- "traefik.enable=true"
- "docker.network=marina-net"
- "traefik.http.routers.kutt-mifi.rule=Host(`mifi.me`)"
- "traefik.http.routers.kutt-mifi.entrypoints=websecure"
- "traefik.http.routers.kutt-mifi.tls.certresolver=letsencrypt"
- "traefik.http.routers.kutt-mifi.service=kutt-short"
- "traefik.http.services.kutt-short.loadbalancer.server.port=3000"
- "traefik.http.routers.kutt-link.rule=Host(`link.mifi.me`)"
- "traefik.http.routers.kutt-link.entrypoints=websecure"
- "traefik.http.routers.kutt-link.tls.certresolver=letsencrypt"
- "traefik.http.routers.kutt-link.service=kutt"
- "traefik.http.services.kutt.loadbalancer.server.port=3000"
qr_api:
build:
context: ./qr-api
dockerfile: Dockerfile
container_name: qr_api
restart: unless-stopped
networks:
- backend
volumes:
- /mnt/config/docker/qr/db:/data
- /mnt/config/docker/qr/uploads:/uploads
environment:
PORT: "8080"
DB_PATH: /data/db.sqlite
UPLOADS_PATH: /uploads
KUTT_API_KEY: ${KUTT_API_KEY:-}
KUTT_BASE_URL: http://kutt:3000
SHORT_DOMAIN: https://mifi.me
qr_web:
build:
context: ./qr-web
dockerfile: Dockerfile
restart: unless-stopped
networks:
- marina-net
- backend
depends_on:
- qr_api
environment:
QR_API_URL: http://qr_api:8080
labels:
- "traefik.enable=true"
- "docker.network=marina-net"
- "traefik.http.routers.qr-web.rule=Host(`qr.mifi.dev`)"
- "traefik.http.routers.qr-web.entrypoints=websecure"
- "traefik.http.routers.qr-web.tls.certresolver=letsencrypt"
- "traefik.http.routers.qr-web.service=qr-web"
- "traefik.http.routers.qr-web.middlewares=qr-web-basicauth"
- "traefik.http.middlewares.qr-web-basicauth.basicauth.users=mifi:$$2y$$05$$TS20fkfrmJ3MLc.cgfM6OcuowOstcy/2DTOq0YfirUDU3b0vtNz."
- "traefik.http.services.qr-web.loadbalancer.server.port=3000"
networks:
marina-net:
external: true
backend:
driver: bridge