docker-compose.yml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. version: '3.9'
  2. services:
  3. keycloak:
  4. build:
  5. context: .
  6. dockerfile: 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. healthcheck:
  37. test: ["CMD", "curl", "-f", "http://localhost:8080/health/ready"]
  38. interval: 30s
  39. timeout: 10s
  40. retries: 3
  41. keycloak-db:
  42. image: postgres:15
  43. container_name: keycloak-db
  44. environment:
  45. POSTGRES_DB: keycloak
  46. POSTGRES_USER: ${KC_DB_USERNAME}
  47. POSTGRES_PASSWORD: ${KC_DB_PASSWORD}
  48. volumes:
  49. - ../data/keycloak/db:/var/lib/postgresql/data
  50. networks:
  51. - keycloak-network
  52. restart: unless-stopped
  53. healthcheck:
  54. test: ["CMD-SHELL", "pg_isready -U ${KC_DB_USERNAME} -d keycloak"]
  55. interval: 10s
  56. timeout: 5s
  57. retries: 5
  58. # In docker-compose.yml ergänzen:
  59. nextcloud:
  60. image: nextcloud:latest
  61. container_name: nextcloud
  62. restart: unless-stopped
  63. environment:
  64. - MYSQL_HOST=nextcloud-db
  65. - MYSQL_DATABASE=nextcloud
  66. - MYSQL_USER=${NEXTCLOUD_DB_USER}
  67. - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
  68. - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
  69. - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
  70. - NEXTCLOUD_TRUSTED_DOMAINS=cloud.mrx8086.com
  71. - OVERWRITEPROTOCOL=https
  72. - OVERWRITEHOST=cloud.mrx8086.com
  73. - OVERWRITEWEBROOT=/
  74. - TRUSTED_PROXIES=172.18.0.0/16
  75. volumes:
  76. - ../data/nextcloud:/var/www/html
  77. - ../config/nextcloud/config:/var/www/html/config
  78. - ../config/nextcloud/custom_apps:/var/www/html/custom_apps
  79. - ../config/nextcloud/data:/var/www/html/data
  80. networks:
  81. - nextcloud-network
  82. depends_on:
  83. - nextcloud-db
  84. nextcloud-db:
  85. image: mariadb:10.6
  86. container_name: nextcloud-db
  87. restart: unless-stopped
  88. command: --transaction-isolation=READ-COMMITTED --log-bin=ROW
  89. environment:
  90. - MYSQL_ROOT_PASSWORD=${NEXTCLOUD_DB_ROOT_PASSWORD}
  91. - MYSQL_DATABASE=nextcloud
  92. - MYSQL_USER=${NEXTCLOUD_DB_USER}
  93. - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
  94. volumes:
  95. - ../data/nextcloud-db:/var/lib/mysql
  96. networks:
  97. - nextcloud-network
  98. paperless:
  99. image: ghcr.io/paperless-ngx/paperless-ngx:latest
  100. container_name: paperless
  101. restart: unless-stopped
  102. ports:
  103. - "8000:8000"
  104. volumes:
  105. - ../data/paperless:/usr/src/paperless/data
  106. - ../config/paperless/media:/usr/src/paperless/media
  107. - ../config/paperless/export:/usr/src/paperless/export
  108. - ../config/paperless/consume:/usr/src/paperless/consume
  109. environment:
  110. - PAPERLESS_ADMIN_USER=${PAPERLESS_ADMIN_USER}
  111. - PAPERLESS_ADMIN_PASSWORD=${PAPERLESS_ADMIN_PASSWORD}
  112. - PAPERLESS_SECRET_KEY=${PAPERLESS_SECRET_KEY}
  113. - PAPERLESS_URL=https://docs.mrx8086.com
  114. - PAPERLESS_ALLOWED_HOSTS=docs.mrx8086.com
  115. - PAPERLESS_ENABLE_OIDC=true
  116. - PAPERLESS_OIDC_RP_CLIENT_ID=${PAPERLESS_CLIENT_ID}
  117. - PAPERLESS_OIDC_RP_CLIENT_SECRET=${PAPERLESS_CLIENT_SECRET}
  118. - PAPERLESS_OIDC_RP_PROVIDER_URL=https://auth.mrx8086.com/realms/office-automation
  119. - PAPERLESS_OIDC_RP_USERNAME_CLAIM=preferred_username
  120. - PAPERLESS_OIDC_RP_NAME_CLAIM=name
  121. - PAPERLESS_OIDC_RP_EMAIL_CLAIM=email
  122. - PAPERLESS_OIDC_RP_RENEW_TOKEN_BEFORE_EXPIRY=true
  123. - PAPERLESS_OIDC_RP_VERIFY_SSL=false
  124. depends_on:
  125. - paperless-db
  126. networks:
  127. - paperless-network
  128. extra_hosts:
  129. - "auth.mrx8086.com:172.23.171.133"
  130. healthcheck:
  131. test: ["CMD", "curl", "-f", "http://localhost:8000/"]
  132. interval: 30s
  133. timeout: 10s
  134. retries: 3
  135. paperless-db:
  136. image: postgres:15
  137. container_name: paperless-db
  138. restart: unless-stopped
  139. environment:
  140. POSTGRES_USER: ${PAPERLESS_DB_USER}
  141. POSTGRES_PASSWORD: ${PAPERLESS_DB_PASSWORD}
  142. POSTGRES_DB: paperless
  143. volumes:
  144. - ../data/paperless-db:/var/lib/postgresql/data
  145. networks:
  146. - paperless-network
  147. healthcheck:
  148. test: ["CMD-SHELL", "pg_isready -U ${PAPERLESS_DB_USER} -d paperless"]
  149. interval: 10s
  150. timeout: 5s
  151. retries: 5
  152. networks:
  153. keycloak-network:
  154. driver: bridge
  155. nextcloud-network:
  156. driver: bridge
  157. paperless-network:
  158. driver: bridge