120 lines
2.9 KiB
YAML
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:
|