forked from baron/baron-sso
150 lines
4.0 KiB
YAML
150 lines
4.0 KiB
YAML
name: ${COMPOSE_PROJECT_NAME}
|
|
|
|
services:
|
|
# --- Infrastructure ---
|
|
postgres:
|
|
image: postgres:17-alpine
|
|
container_name: ${COMPOSE_PROJECT_NAME}_db
|
|
environment:
|
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
|
ports:
|
|
- "${DB_PORT}:5432"
|
|
volumes:
|
|
- db_data_${INSTANCE_NAME}:/var/lib/postgresql/data
|
|
networks: [app_net]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
interval: 5s
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: ${COMPOSE_PROJECT_NAME}_redis
|
|
ports:
|
|
- "${REDIS_PORT}:6379"
|
|
networks: [app_net]
|
|
|
|
clickhouse:
|
|
image: clickhouse/clickhouse-server:latest
|
|
container_name: ${COMPOSE_PROJECT_NAME}_clickhouse
|
|
environment:
|
|
- CLICKHOUSE_USER=baron
|
|
- CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD}
|
|
ports:
|
|
- "${CLICKHOUSE_PORT_HTTP}:8123"
|
|
- "${CLICKHOUSE_PORT_NATIVE}:9000"
|
|
volumes:
|
|
- clickhouse_data_${INSTANCE_NAME}:/var/lib/clickhouse
|
|
networks: [app_net]
|
|
|
|
# --- Ory Stack ---
|
|
postgres_ory:
|
|
image: postgres:17-alpine
|
|
container_name: ${COMPOSE_PROJECT_NAME}_ory_db
|
|
environment:
|
|
- POSTGRES_USER=${ORY_POSTGRES_USER}
|
|
- POSTGRES_PASSWORD=${ORY_POSTGRES_PASSWORD}
|
|
volumes:
|
|
- ory_db_data_${INSTANCE_NAME}:/var/lib/postgresql/data
|
|
networks: [app_net]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${ORY_POSTGRES_USER}"]
|
|
interval: 5s
|
|
|
|
kratos:
|
|
image: oryd/kratos:v25.4.0
|
|
container_name: ${COMPOSE_PROJECT_NAME}_kratos
|
|
env_file: .env
|
|
volumes:
|
|
- ./ory/kratos:/etc/config/kratos:ro
|
|
command: serve -c /etc/config/kratos/kratos.yml --dev
|
|
networks: [app_net]
|
|
depends_on:
|
|
postgres_ory: { condition: service_healthy }
|
|
|
|
oathkeeper:
|
|
image: oryd/oathkeeper:v25.4.0
|
|
container_name: ${COMPOSE_PROJECT_NAME}_oathkeeper
|
|
env_file: .env
|
|
ports:
|
|
- "${OATHKEEPER_PROXY_PORT}:4455"
|
|
volumes:
|
|
- ./ory/oathkeeper:/etc/config/oathkeeper:ro
|
|
networks: [app_net]
|
|
|
|
# --- Application Services ---
|
|
backend:
|
|
image: baron-backend:latest
|
|
container_name: ${COMPOSE_PROJECT_NAME}_backend
|
|
env_file: .env
|
|
environment:
|
|
- PORT=${BACKEND_PORT}
|
|
- DB_HOST=postgres
|
|
- REDIS_ADDR=redis:6379
|
|
- CLICKHOUSE_HOST=clickhouse
|
|
ports:
|
|
- "${BACKEND_PORT}:${BACKEND_PORT}"
|
|
networks: [app_net]
|
|
depends_on:
|
|
postgres: { condition: service_healthy }
|
|
redis: { condition: service_started }
|
|
|
|
gateway:
|
|
image: nginx:alpine
|
|
container_name: ${COMPOSE_PROJECT_NAME}_gateway
|
|
ports:
|
|
- "${USERFRONT_PORT}:80"
|
|
volumes:
|
|
- ./gateway/nginx.conf:/etc/nginx/nginx.conf:ro
|
|
networks: [app_net]
|
|
|
|
adminfront:
|
|
image: node:20-alpine
|
|
container_name: ${COMPOSE_PROJECT_NAME}_adminfront
|
|
working_dir: /app
|
|
env_file: .env
|
|
ports:
|
|
- "${ADMINFRONT_PORT}:5173"
|
|
volumes:
|
|
- ../../adminfront:/app
|
|
- ./adminfront/vite.config.ts:/app/vite.config.ts:ro
|
|
- ./adminfront/auth.ts:/app/src/lib/auth.ts:ro
|
|
command: npm run dev -- --host 0.0.0.0
|
|
networks: [app_net]
|
|
|
|
devfront:
|
|
image: node:20-alpine
|
|
container_name: ${COMPOSE_PROJECT_NAME}_devfront
|
|
working_dir: /app
|
|
env_file: .env
|
|
ports:
|
|
- "${DEVFRONT_PORT}:5173"
|
|
volumes:
|
|
- ../../devfront:/app
|
|
- ./devfront/vite.config.ts:/app/vite.config.ts:ro
|
|
- ./devfront/auth.ts:/app/src/lib/auth.ts:ro
|
|
command: npm run dev -- --host 0.0.0.0
|
|
networks: [app_net]
|
|
|
|
orgfront:
|
|
image: node:20-alpine
|
|
container_name: ${COMPOSE_PROJECT_NAME}_orgfront
|
|
working_dir: /app
|
|
env_file: .env
|
|
ports:
|
|
- "${ORGFRONT_PORT}:5175"
|
|
volumes:
|
|
- ../../orgfront:/app
|
|
- ./orgfront/vite.config.ts:/app/vite.config.ts:ro
|
|
- ./orgfront/auth.ts:/app/src/lib/auth.ts:ro
|
|
command: npm run dev -- --host 0.0.0.0 --port 5175
|
|
networks: [app_net]
|
|
|
|
networks:
|
|
app_net:
|
|
name: ${COMPOSE_PROJECT_NAME}_net
|
|
|
|
volumes:
|
|
db_data_${INSTANCE_NAME}:
|
|
ory_db_data_${INSTANCE_NAME}:
|
|
clickhouse_data_${INSTANCE_NAME}:
|