docker-compose.yml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. version: '3.9'
  2. services:
  3. keycloak:
  4. build:
  5. context: .
  6. dockerfile: keycloak.Containerfile
  7. args:
  8. KC_DB_USERNAME: ${KC_DB_USERNAME}
  9. KC_DB_PASSWORD: ${KC_DB_PASSWORD}
  10. container_name: keycloak
  11. environment:
  12. KC_DB: postgres
  13. KC_DB_URL: jdbc:postgresql://keycloak-db:5432/keycloak
  14. KC_DB_USERNAME: ${KC_DB_USERNAME}
  15. KC_DB_PASSWORD: ${KC_DB_PASSWORD}
  16. KC_PROXY_HEADERS: xforwarded
  17. KC_PROXY_ADDRESS_FORWARDING: "true"
  18. KC_HTTP_ENABLED: "true"
  19. KC_HOSTNAME_STRICT: "false"
  20. KC_PROXY: edge
  21. KC_FEATURES: "token-exchange,scripts,preview,admin-api"
  22. KC_HEALTH_ENABLED: "true"
  23. KC_METRICS_ENABLED: "true"
  24. KC_HOSTNAME: https://auth.mrx8086.com
  25. KC_BOOTSTRAP_ADMIN_USERNAME: admin
  26. KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
  27. command: ["start-dev"] # Für Entwicklung; entferne "-dev" für Produktion
  28. ports:
  29. - "8080:8080"
  30. volumes:
  31. - ../config/keycloak/themes:/opt/keycloak/themes:ro
  32. networks:
  33. - keycloak-network
  34. depends_on:
  35. - keycloak-db
  36. extra_hosts:
  37. - "cloud.mrx8086.com:172.23.171.133"
  38. healthcheck:
  39. test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
  40. interval: 30s
  41. timeout: 10s
  42. retries: 3
  43. keycloak-db:
  44. image: postgres:15
  45. container_name: keycloak-db
  46. environment:
  47. POSTGRES_DB: keycloak
  48. POSTGRES_USER: ${KC_DB_USERNAME}
  49. POSTGRES_PASSWORD: ${KC_DB_PASSWORD}
  50. volumes:
  51. - ../data/keycloak-db:/var/lib/postgresql/data
  52. networks:
  53. - keycloak-network
  54. restart: unless-stopped
  55. healthcheck:
  56. test: ["CMD-SHELL", "pg_isready -U ${KC_DB_USERNAME} -d keycloak"]
  57. interval: 10s
  58. timeout: 5s
  59. retries: 5
  60. # In docker-compose.yml ergänzen:
  61. nextcloud:
  62. image: nextcloud:latest
  63. container_name: nextcloud
  64. restart: unless-stopped
  65. ports:
  66. - "8081:80"
  67. volumes:
  68. - ../data/nextcloud:/var/www/html
  69. - ../config/nextcloud/config:/var/www/html/config
  70. - ../config/nextcloud/custom_apps:/var/www/html/custom_apps
  71. - ../data/nextcloud-db:/var/lib/mysql
  72. environment:
  73. - MYSQL_HOST=nextcloud-db
  74. - MYSQL_DATABASE=nextcloud
  75. - MYSQL_USER=${NEXTCLOUD_DB_USER}
  76. - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
  77. - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
  78. - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
  79. - NEXTCLOUD_TRUSTED_DOMAINS=cloud.mrx8086.com
  80. - OVERWRITEPROTOCOL=https
  81. - OVERWRITEHOST=cloud.mrx8086.com
  82. - OVERWRITEWEBROOT=/
  83. - TRUSTED_PROXIES=172.19.0.0/16
  84. - NEXTCLOUD_URL=https://cloud.mrx8086.com
  85. - NEXTCLOUD_DEBUG=1
  86. - NEXTCLOUD_CONFIG_CUSTOM_SCOPE="openid profile groups-nextcloud"
  87. healthcheck:
  88. test: ["CMD", "curl", "-f", "http://localhost:80/"]
  89. interval: 30s
  90. timeout: 10s
  91. retries: 3
  92. networks:
  93. - nextcloud-network
  94. depends_on:
  95. - nextcloud-db
  96. extra_hosts:
  97. - "auth.mrx8086.com:172.23.171.133"
  98. dns:
  99. - 8.8.8.8
  100. - 8.8.4.4
  101. nextcloud-db:
  102. image: mariadb:10.6
  103. container_name: nextcloud-db
  104. restart: unless-stopped
  105. command: --transaction-isolation=READ-COMMITTED --log-bin=ROW
  106. environment:
  107. - MYSQL_ROOT_PASSWORD=${NEXTCLOUD_DB_ROOT_PASSWORD}
  108. - MYSQL_DATABASE=nextcloud
  109. - MYSQL_USER=${NEXTCLOUD_DB_USER}
  110. - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
  111. volumes:
  112. - ../data/nextcloud-db:/var/lib/mysql
  113. networks:
  114. - nextcloud-network
  115. networks:
  116. keycloak-network:
  117. driver: bridge
  118. nextcloud-network:
  119. driver: bridge