mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2025-12-06 03:26:44 +03:00
130 lines
3.5 KiB
YAML
130 lines
3.5 KiB
YAML
version: "3.8"
|
|
|
|
services:
|
|
# PostgreSQL database for Keycloak
|
|
keycloak-db:
|
|
image: postgres:15-alpine
|
|
container_name: keycloak-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: keycloak
|
|
POSTGRES_USER: keycloak
|
|
POSTGRES_PASSWORD: keycloak-db-password
|
|
volumes:
|
|
- keycloak-db-data:/var/lib/postgresql/data
|
|
networks:
|
|
- keycloak-net
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U keycloak"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# Keycloak Identity Provider
|
|
keycloak:
|
|
image: quay.io/keycloak/keycloak:23.0
|
|
container_name: keycloak
|
|
restart: unless-stopped
|
|
command: start-dev # Use 'start' for production with HTTPS
|
|
environment:
|
|
# Admin credentials
|
|
KEYCLOAK_ADMIN: admin
|
|
KEYCLOAK_ADMIN_PASSWORD: admin-password
|
|
|
|
# Database configuration
|
|
KC_DB: postgres
|
|
KC_DB_URL_HOST: keycloak-db
|
|
KC_DB_URL_DATABASE: keycloak
|
|
KC_DB_USERNAME: keycloak
|
|
KC_DB_PASSWORD: keycloak-db-password
|
|
|
|
# HTTP settings
|
|
KC_HTTP_ENABLED: true
|
|
KC_HTTP_PORT: 8080
|
|
KC_HOSTNAME_STRICT: false
|
|
KC_HOSTNAME_STRICT_HTTPS: false
|
|
KC_PROXY: edge # If behind a proxy
|
|
|
|
# Development settings (remove for production)
|
|
KC_HOSTNAME: localhost
|
|
KC_HOSTNAME_PORT: 8080
|
|
KC_HOSTNAME_ADMIN: localhost
|
|
|
|
# Features
|
|
KC_FEATURES: token-exchange,admin-fine-grained-authz
|
|
|
|
# Health and metrics
|
|
KC_HEALTH_ENABLED: true
|
|
KC_METRICS_ENABLED: true
|
|
|
|
# Log level
|
|
KC_LOG_LEVEL: INFO
|
|
# Uncomment for debug logging
|
|
# KC_LOG_LEVEL: DEBUG
|
|
# QUARKUS_LOG_CATEGORY__ORG_KEYCLOAK_SERVICES: DEBUG
|
|
ports:
|
|
- "8080:8080" # HTTP
|
|
- "8443:8443" # HTTPS (if configured)
|
|
- "9000:9000" # Management
|
|
networks:
|
|
- keycloak-net
|
|
- gitea-mirror-net
|
|
depends_on:
|
|
keycloak-db:
|
|
condition: service_healthy
|
|
volumes:
|
|
# For custom themes (optional)
|
|
- keycloak-themes:/opt/keycloak/themes
|
|
# For importing realm configurations
|
|
- ./keycloak-realm-export.json:/opt/keycloak/data/import/realm.json:ro
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health/ready"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 10
|
|
start_period: 60s
|
|
|
|
# Gitea Mirror Application (uncomment to run together)
|
|
# gitea-mirror:
|
|
# build: .
|
|
# # OR use pre-built image:
|
|
# # image: ghcr.io/raylabshq/gitea-mirror:latest
|
|
# container_name: gitea-mirror
|
|
# restart: unless-stopped
|
|
# environment:
|
|
# # Core Settings
|
|
# BETTER_AUTH_URL: http://localhost:4321
|
|
# BETTER_AUTH_TRUSTED_ORIGINS: http://localhost:4321,http://localhost:8080
|
|
# BETTER_AUTH_SECRET: "your-32-character-secret-key-here"
|
|
#
|
|
# # GitHub Settings (configure as needed)
|
|
# GITHUB_USERNAME: ${GITHUB_USERNAME}
|
|
# GITHUB_TOKEN: ${GITHUB_TOKEN}
|
|
#
|
|
# # Gitea Settings (configure as needed)
|
|
# GITEA_URL: ${GITEA_URL}
|
|
# GITEA_USERNAME: ${GITEA_USERNAME}
|
|
# GITEA_TOKEN: ${GITEA_TOKEN}
|
|
# volumes:
|
|
# - ./data:/app/data
|
|
# ports:
|
|
# - "4321:4321"
|
|
# networks:
|
|
# - gitea-mirror-net
|
|
# depends_on:
|
|
# keycloak:
|
|
# condition: service_healthy
|
|
|
|
volumes:
|
|
keycloak-db-data:
|
|
name: keycloak-db-data
|
|
keycloak-themes:
|
|
name: keycloak-themes
|
|
|
|
networks:
|
|
keycloak-net:
|
|
name: keycloak-net
|
|
driver: bridge
|
|
gitea-mirror-net:
|
|
name: gitea-mirror-net
|
|
driver: bridge |