docker-compose example

name: fazuh-login

services:

  keycloak:
    command: start-dev
    image: 'quay.io/keycloak/keycloak:26.3.5'
    environment:
      - KC_BOOTSTRAP_ADMIN_USERNAME=temp-admin
      - KC_BOOTSTRAP_ADMIN_PASSWORD=temp-admin
      # db
      - KC_DB=mysql
      - KC_DB_URL=jdbc:mysql://mysql:3306/${DB_DATABASE:-keycloak}
      - KC_DB_USERNAME=${DB_USER:-keycloak}
      - KC_DB_PASSWORD=${DB_PASSWORD:?error}
      # monitoring
      - KC_METRICS_ENABLED=true
      - KC_HEALTH_ENABLED=true  # check on /health
      - KC_EVENT_METRICS_USER_ENABLED=true
      # network
      - KC_PROXY_HEADERS=xforwarded
    expose:
      - 8080
      - 8443
    volumes:
      - keycloak-data:/opt/keycloak/data
    networks:
      fazuh-web-network:
        aliases:
          - web_keycloak
      default:
    restart: unless-stopped

  # Backend
  mysql:
    image: mysql:8.4
    volumes:
      - mysql-data:/var/lib/mysql
    networks: 
      default:
    expose:
      - 3306
    environment:
      - MYSQL_DATABASE=${DB_DATABASE:-keycloak}
      - MYSQL_USER=${DB_USER:-keycloak}
      - MYSQL_PASSWORD=${DB_PASSWORD:?error}
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD:?error}
    restart: unless-stopped

networks:
  fazuh-web-network:
    external: true

volumes:
  keycloak-data:
  mysql-data: