licenses-management/docker-compose.yml
2025-09-28 22:42:48 +01:00

120 lines
2.9 KiB
YAML

version: "3.9"
services:
# -----------------------------
# Keygen server components
# -----------------------------
init:
build:
context: ./keygen-docker-compose
dockerfile_inline: |
FROM alpine
RUN apk add --no-cache openssl bash uuidgen
COPY ./keygen-init /usr/local/bin
RUN dos2unix /usr/local/bin/keygen-init
RUN chmod +x /usr/local/bin/keygen-init
entrypoint: keygen-init
volumes:
- source: ./
target: /var/keygen
type: bind
setup:
image: keygen/api:latest
command: setup
working_dir: /app
environment:
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
DISABLE_DATABASE_ENVIRONMENT_CHECK: 1
env_file:
- .env
- ./keygen-docker-compose/keys.env
depends_on:
- redis
tty: true
stdin_open: true
web:
image: keygen/api:latest
command: web
working_dir: /app
ports:
- "${KEYGEN_PORT}:${KEYGEN_PORT}"
environment:
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
REDIS_URL: redis://redis:6379
KEYGEN_ADMIN_USER: ${KEYGEN_ADMIN_USER}
KEYGEN_ADMIN_PASS: ${KEYGEN_ADMIN_PASS}
env_file:
- .env
- ./keygen-docker-compose/keys.env
volumes:
- keygen:/etc/keygen
depends_on:
- redis
worker:
image: keygen/api:latest
command: worker
working_dir: /app
environment:
DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
REDIS_URL: redis://redis:6379
KEYGEN_ADMIN_USER: ${KEYGEN_ADMIN_USER}
KEYGEN_ADMIN_PASS: ${KEYGEN_ADMIN_PASS}
env_file:
- .env
- ./keygen-docker-compose/keys.env
volumes:
- keygen:/etc/keygen
depends_on:
- redis
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
- redis:/data
caddy:
image: caddy:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./keygen-docker-compose/Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
depends_on:
- web
# -----------------------------
# Dashboard (Next.js app)
# -----------------------------
dashboard:
container_name: keygen-dashboard
build:
context: .
dockerfile: Dockerfile
args:
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL}
ports:
- "${DASHBOARD_PORT}:${DASHBOARD_PORT}"
environment:
NODE_ENV: ${NODE_ENV:-production}
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL}
DASHBOARD_PORT: ${DASHBOARD_PORT}
DASHBOARD_HOST: 0.0.0.0
PORT: ${DASHBOARD_PORT}
depends_on:
- web
restart: unless-stopped
volumes:
keygen:
redis:
caddy_data:
caddy_config: