version: '3.9' services: keycloak: build: context: . dockerfile: keycloak.Containerfile args: KC_DB_USERNAME: ${KC_DB_USERNAME} KC_DB_PASSWORD: ${KC_DB_PASSWORD} container_name: keycloak environment: KC_DB: postgres KC_DB_URL: jdbc:postgresql://keycloak-db:5432/keycloak KC_DB_USERNAME: ${KC_DB_USERNAME} KC_DB_PASSWORD: ${KC_DB_PASSWORD} KC_PROXY_HEADERS: xforwarded KC_PROXY_ADDRESS_FORWARDING: "true" KC_HTTP_ENABLED: "true" KC_HOSTNAME_STRICT: "false" KC_PROXY: edge KC_FEATURES: "token-exchange,scripts,preview,admin-api" KC_HEALTH_ENABLED: "true" KC_METRICS_ENABLED: "true" KC_HOSTNAME: https://auth.mrx8086.com KC_BOOTSTRAP_ADMIN_USERNAME: admin KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD} command: ["start-dev"] # Für Entwicklung; entferne "-dev" für Produktion ports: - "8080:8080" volumes: - ../config/keycloak/themes:/opt/keycloak/themes:ro networks: - keycloak-network depends_on: - keycloak-db healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/health/ready"] interval: 30s timeout: 10s retries: 3 keycloak-db: image: postgres:15 container_name: keycloak-db environment: POSTGRES_DB: keycloak POSTGRES_USER: ${KC_DB_USERNAME} POSTGRES_PASSWORD: ${KC_DB_PASSWORD} volumes: - ../data/keycloak/db:/var/lib/postgresql/data networks: - keycloak-network restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U ${KC_DB_USERNAME} -d keycloak"] interval: 10s timeout: 5s retries: 5 # In docker-compose.yml ergänzen: nextcloud: image: nextcloud:latest container_name: nextcloud restart: unless-stopped environment: - MYSQL_HOST=nextcloud-db - MYSQL_DATABASE=nextcloud - MYSQL_USER=${NEXTCLOUD_DB_USER} - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD} - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} - NEXTCLOUD_TRUSTED_DOMAINS=cloud.mrx8086.com - OVERWRITEPROTOCOL=https - OVERWRITEHOST=cloud.mrx8086.com - OVERWRITEWEBROOT=/ - TRUSTED_PROXIES=172.18.0.0/16 volumes: - ../data/nextcloud:/var/www/html - ../config/nextcloud/config:/var/www/html/config - ../config/nextcloud/custom_apps:/var/www/html/custom_apps - ../config/nextcloud/data:/var/www/html/data networks: - nextcloud-network depends_on: - nextcloud-db nextcloud-db: image: mariadb:10.6 container_name: nextcloud-db restart: unless-stopped command: --transaction-isolation=READ-COMMITTED --log-bin=ROW environment: - MYSQL_ROOT_PASSWORD=${NEXTCLOUD_DB_ROOT_PASSWORD} - MYSQL_DATABASE=nextcloud - MYSQL_USER=${NEXTCLOUD_DB_USER} - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD} volumes: - ../data/nextcloud-db:/var/lib/mysql networks: - nextcloud-network networks: keycloak-network: driver: bridge nextcloud-network: driver: bridge