Ctrl K
ComunidadGuías…

docker-compose.stack.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
name: openlicensd-stack

services:
  postgres:
    image: postgres:18-alpine
    environment:
      POSTGRES_USER: openlicensd
      POSTGRES_PASSWORD: openlicensd
      POSTGRES_DB: openlicensd
    volumes:
      - postgres_data:/var/lib/postgresql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U openlicensd -d openlicensd"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: unless-stopped

  openlicensd:
    image: ghcr.io/alvarorg14/openlicensd:${OPENLICENSD_IMAGE_TAG:-latest}
    depends_on:
      postgres:
        condition: service_healthy
    ports:
      - "${OPENLICENSD_PORT:-8080}:8080"
    environment:
      OPENLICENSD_ADDR: ":8080"
      OPENLICENSD_DATABASE_HOST: postgres
      OPENLICENSD_DATABASE_PORT: 5432
      OPENLICENSD_DATABASE_USER: openlicensd
      OPENLICENSD_DATABASE_PASSWORD: openlicensd
      OPENLICENSD_DATABASE_NAME: openlicensd
      OPENLICENSD_DATABASE_SSLMODE: disable
      OPENLICENSD_DATABASE_MAX_CONNS: ${OPENLICENSD_DATABASE_MAX_CONNS:-0}
      OPENLICENSD_DATABASE_MIN_CONNS: ${OPENLICENSD_DATABASE_MIN_CONNS:-0}
      OPENLICENSD_DATABASE_MAX_CONN_IDLE_MINUTES: ${OPENLICENSD_DATABASE_MAX_CONN_IDLE_MINUTES:-0}
      OPENLICENSD_DATABASE_STATEMENT_TIMEOUT_SECONDS: ${OPENLICENSD_DATABASE_STATEMENT_TIMEOUT_SECONDS:-0}
      OPENLICENSD_BOOTSTRAP_ADMIN_EMAIL: ${OPENLICENSD_BOOTSTRAP_ADMIN_EMAIL:-admin@example.com}
      OPENLICENSD_BOOTSTRAP_ADMIN_NAME: ${OPENLICENSD_BOOTSTRAP_ADMIN_NAME:-Administrator}
      OPENLICENSD_BOOTSTRAP_ADMIN_PASSWORD_HASH: ${OPENLICENSD_BOOTSTRAP_ADMIN_PASSWORD_HASH:-$$2a$$10$$w6lsMGg4BZVLWv0dqUXT2eUWcWhbh99FIECbPlBNeE.pu089T5E/2}
      OPENLICENSD_SESSION_TTL_HOURS: ${OPENLICENSD_SESSION_TTL_HOURS:-24}
      OPENLICENSD_REQUEST_TIMEOUT_SECONDS: ${OPENLICENSD_REQUEST_TIMEOUT_SECONDS:-30}
      OPENLICENSD_SESSION_CLEANUP_INTERVAL_MINUTES: ${OPENLICENSD_SESSION_CLEANUP_INTERVAL_MINUTES:-60}
      OPENLICENSD_COOKIE_SECURE: ${OPENLICENSD_COOKIE_SECURE:-false}
      OPENLICENSD_LOCAL_LOGIN_ENABLED: ${OPENLICENSD_LOCAL_LOGIN_ENABLED:-true}
      OPENLICENSD_LOG_LEVEL: ${OPENLICENSD_LOG_LEVEL:-info}
      OPENLICENSD_LOG_FORMAT: ${OPENLICENSD_LOG_FORMAT:-json}
      OPENLICENSD_TRUSTED_PROXIES: ${OPENLICENSD_TRUSTED_PROXIES:-}
      OPENLICENSD_RATE_LIMIT_ENABLED: ${OPENLICENSD_RATE_LIMIT_ENABLED:-true}
      OPENLICENSD_RATE_LIMIT_PUBLIC_PER_MINUTE: ${OPENLICENSD_RATE_LIMIT_PUBLIC_PER_MINUTE:-600}
      OPENLICENSD_RATE_LIMIT_PUBLIC_BURST: ${OPENLICENSD_RATE_LIMIT_PUBLIC_BURST:-60}
      OPENLICENSD_RATE_LIMIT_LOGIN_PER_MINUTE: ${OPENLICENSD_RATE_LIMIT_LOGIN_PER_MINUTE:-30}
      OPENLICENSD_RATE_LIMIT_LOGIN_BURST: ${OPENLICENSD_RATE_LIMIT_LOGIN_BURST:-10}
      OPENLICENSD_RATE_LIMIT_AUTHENTICATED_PER_MINUTE: ${OPENLICENSD_RATE_LIMIT_AUTHENTICATED_PER_MINUTE:-300}
      OPENLICENSD_RATE_LIMIT_AUTHENTICATED_BURST: ${OPENLICENSD_RATE_LIMIT_AUTHENTICATED_BURST:-60}
      OPENLICENSD_RATE_LIMIT_IDLE_MINUTES: ${OPENLICENSD_RATE_LIMIT_IDLE_MINUTES:-10}
      OPENLICENSD_OIDC_ENABLED: ${OPENLICENSD_OIDC_ENABLED:-false}
      OPENLICENSD_OIDC_ISSUER_URL: ${OPENLICENSD_OIDC_ISSUER_URL:-https://accounts.google.com}
      OPENLICENSD_OIDC_CLIENT_ID: ${OPENLICENSD_OIDC_CLIENT_ID:-}
      OPENLICENSD_OIDC_CLIENT_SECRET: ${OPENLICENSD_OIDC_CLIENT_SECRET:-}
      OPENLICENSD_OIDC_REDIRECT_URL: ${OPENLICENSD_OIDC_REDIRECT_URL:-http://localhost:8080/api/v1/auth/oidc/callback}
      OPENLICENSD_OIDC_SCOPES: ${OPENLICENSD_OIDC_SCOPES:-openid,profile,email}
      OPENLICENSD_OIDC_DEFAULT_ROLE: ${OPENLICENSD_OIDC_DEFAULT_ROLE:-viewer}
      OPENLICENSD_OIDC_PROVIDER_NAME: ${OPENLICENSD_OIDC_PROVIDER_NAME:-Google}
      OPENLICENSD_OIDC_ADMIN_EMAILS: ${OPENLICENSD_OIDC_ADMIN_EMAILS:-}
      OPENLICENSD_HARBOR_ENABLED: ${OPENLICENSD_HARBOR_ENABLED:-false}
      OPENLICENSD_HARBOR_URL: ${OPENLICENSD_HARBOR_URL:-https://harbor.example.com}
      OPENLICENSD_HARBOR_ADMIN_USERNAME: ${OPENLICENSD_HARBOR_ADMIN_USERNAME:-admin}
      OPENLICENSD_HARBOR_ADMIN_PASSWORD: ${OPENLICENSD_HARBOR_ADMIN_PASSWORD:-change-me}
      OPENLICENSD_HARBOR_PROJECTS: ${OPENLICENSD_HARBOR_PROJECTS:-myproject}
      OPENLICENSD_HARBOR_ROBOT_DURATION_DAYS: ${OPENLICENSD_HARBOR_ROBOT_DURATION_DAYS:-1}
      OPENLICENSD_HARBOR_ROBOT_NAME_PREFIX: ${OPENLICENSD_HARBOR_ROBOT_NAME_PREFIX:-openlicensd}
      OPENLICENSD_HARBOR_INSECURE_SKIP_VERIFY: ${OPENLICENSD_HARBOR_INSECURE_SKIP_VERIFY:-false}
      OPENLICENSD_HARBOR_DEBUG: ${OPENLICENSD_HARBOR_DEBUG:-false}
    restart: unless-stopped

volumes:
  postgres_data: