# LeTTo Server und Data-Service
networks:
  nw-letto:
    external: true

# Der Name bestimmt das Projekt und sollte bei jeder yml-Datei unterschiedlich sein - er kann mit -p bei docker-compose überschrieben werden
name: letto-school-${LETTO_1_SCHOOL}

services:
  # School 1
  data1:
    image: lettohub/letto-service-data:stable
    restart: always
    networks:
      - nw-letto
    deploy:
      resources:
        limits:
          memory: "${LETTO_1_DATA_MEMORY_LIMIT:-${DATA_MEMORY_LIMIT:-1.5G}}"
    hostname: letto-data-${LETTO_1_SCHOOL}
    container_name: letto-data-${LETTO_1_SCHOOL}
    security_opt:
      - seccomp:unconfined
    logging:
      driver: "json-file"
      options:
        max-size: "2m"
        max-file: "3"
    volumes:
      - ${VOLUME_LOG:-/opt/letto/docker/storage/log}/data/${LETTO_1_SCHOOL}:/log
      - ${VOLUME_IMAGES:-/opt/letto/docker/storage/images}:/opt/letto/images
    healthcheck:
      test: ["CMD", "bash", "/healthcheck.sh"]
      interval: 1m30s
      timeout: 20s
      retries: 3
      start_period: 300s
    environment:
      - TZ=${TIMEZONE:-Europe/Berlin}
      - LC_ALL=${LOCALE:-de_DE.UTF-8}
      - letto_jwt_expiration=${JWT_EXPIRATION_MS:-600000}
      - letto_jwt_refresh_time=${JWT_REFRESH_TIME_MS:-300000}
      - UNHEALTHY_RETRIES=${DATA_UNHEALTHY_RETRIES:-${UNHEALTHY_RETRIES:-20}}
      - spring_datasource_url=jdbc:mysql://${LETTO_1_MYSQL_HOST:-letto-mysql.nw-letto:3306}/${LETTO_1_MYSQL_DATABASE:-letto}?${LETTO_1_MYSQL_DATA_PARS:-useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin}
      - spring_datasource_username=${LETTO_1_MYSQL_USER:-letto}
      - spring_datasource_password=${LETTO_1_MYSQL_PASSWORD}
      - letto_school=${LETTO_1_SCHOOL}
      - jwt_secret=${JWT_SECRET:-YWJj}
      - server_secret=${SERVER_SECRET:-YWJj}
      - letto_log=/log
      - letto_schulen=${LETTO_SCHULEN}
      - letto_user_user_password=${SERVICE_USER_PASSWORD}
      - letto_user_gast_password=${SERVICE_GAST_PASSWORD}
      - letto_user_admin_password=${SERVICE_ADMIN_PASSWORD}
      - letto_setup_uri=${LETTO_SETUP_URI:-http://letto-setup.nw-letto:8096}
      - letto_login_uri=${LETTO_LOGIN_URI:-http://letto-login.nw-letto:8095}
      - letto_lettodata_redirecttokenuri=${LETTO_1_LETTO_URI_EXTERN}/loginTempToken.jsf
      - REDIS_PASSWORD=${REDIS_PASSWORD:-${MYSQL_ROOT_PASSWORD}}
      - REDIS_DEFAULT_DATABASE=${LOGIN_REDIS_DEFAULT_DATABASE:-1}
      - MONGO_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD:-${MYSQL_ROOT_PASSWORD}}
      - MONGO_DEFAULT_DATABASE=${LOGIN_MONGO_DEFAULT_DATABASE:-login}
      - JAVA_OPTS=${LETTO_1_JAVA_OPTS_DATA:-${JAVA_OPTS_DATA:--Xms100m -Xmx1000m}}
      - debug=${LETTO_1_DATA_DEBUG:-${DEBUG:-false}}
    ports:
      - "${LETTO_1_DEBUG_PORT_DATA:-4200}:5300"

  letto1:
    image: lettohub/lettoserver:stable
    restart: always
    networks:
      - nw-letto
    deploy:
      resources:
        limits:
          memory: "${LETTO_MEMORY_LIMIT:-3G}"
    hostname: letto-server-${LETTO_1_SCHOOL}
    container_name: letto-server-${LETTO_1_SCHOOL}
    security_opt:
      - seccomp:unconfined
    logging:
      driver: "json-file"
      options:
        max-size: "2m"
        max-file: "3"
    healthcheck:
      test: [ "CMD", "bash", "/scripts/healthcheck.sh" ]
      interval: 1m30s
      timeout: 20s
      retries: 3
      start_period: 300s
    environment:
      - TZ=${TIMEZONE:-Europe/Berlin}
      - UNHEALTHY_RETRIES=${LETTO_UNHEALTHY_RETRIES:-${UNHEALTHY_RETRIES:-20}}
      - mysqlhost=${LETTO_1_MYSQL_HOST:-letto-mysql.nw-letto:3306}
      - mysqldb=${LETTO_1_MYSQL_DATABASE:-letto}
      - mysqlpars=${LETTO_1_MYSQL_LETTO_PARS:-useSSL=false&amp;useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=Europe/Berlin&amp;allowPublicKeyRetrieval=true}
      - memory=${LETTO_1_MEMORY:-500M}
      - mysqluser=${LETTO_1_MYSQL_USER:-letto}
      - mysqlpassword=${LETTO_1_MYSQL_PASSWORD}
      - letto_local_restkey=${LETTO_RESTKEY:-}
      - letto_jwt_secret=${JWT_SECRET:-YWJj}
      - letto_jwt_expiration=${JWT_EXPIRATION_MS:-600000}
      - letto_jwt_refresh_time=${JWT_REFRESH_TIME_MS:-300000}
      - letto_server_secret=${SERVER_SECRET:-YWJj}
      - letto_local_privatkey=${LETTO_LOCAL_PRIVATE_KEY:-}
      - letto_local_publickey=${LETTO_LOCAL_PUBLIC_KEY:-}
      - school=${LETTO_1_SCHOOL}
      - letto_school=${LETTO_1_SCHOOL}
      - letto_schulen=${LETTO_SCHULEN}
      - letto_pathImages=/opt/letto/images
      - letto_webPathImages=/images
      - letto_pathImagesPhotos=/opt/letto/photos
      - letto_webPathImagesPhotos=/images/photos/${LETTO_1_SCHOOL}
      - letto_pathImagesPlugins=/opt/letto/plugins
      - letto_webPathImagesPlugins=/images/plugins/${LETTO_1_SCHOOL}
      - letto_pathProjekte=/opt/letto/projekte
      - letto_pathProjektAbgaben=/opt/letto/projekte
      - letto_webPathProjekte=/projekte/${LETTO_1_SCHOOL}
      - letto_schule_standard_lizenz=${LETTO_1_LICENCE}
      - letto_schule_standard_idschule_lizenz=${LETTO_1_ID_SCHULE_LIZENZ}
      - letto_schule_standard_idschule_data=${LETTO_1_ID_SCHULE_DATA}
      - letto_schule_standard_schulname=${LETTO_1_SCHULNAME}
      - letto_schule_standard_lettodata_uri=${LETTO_1_DATA_URI}
      - letto_schule_standard_lettodata_user=${LETTO_1_DATA_USER}
      - letto_schule_standard_lettodata_password=${LETTO_1_DATA_PASSWORD}
      - letto_schule_standard_letto_uri=${LETTO_1_LETTO_URI}
      - letto_schule_standard_login_uriextern=${LETTO_1_LOGIN_URI_EXTERN}
      - letto_schule_standard_letto_uriextern=${LETTO_1_LETTO_URI_EXTERN}
      - letto_lizenzAutomatic=0
      - letto_license_server=${LETTO_LICENSE_SERVER:-https://license.letto.at/lettolicense}
      - letto_user_user_password=${SERVICE_USER_PASSWORD}
      - letto_user_gast_password=${SERVICE_GAST_PASSWORD}
      - letto_user_admin_password=${SERVICE_ADMIN_PASSWORD}
      - letto_lettodata_uri=${LETTO_1_DATA_URI}
      - letto_lti_uri=${LETTO_LTI_URI:-http://letto-lti.nw-letto:8090}
      - letto_image_uri=${LETTO_IMAGE_URI:-http://letto-image.nw-letto:8091}
      - letto_math_uri=${LETTO_MATH_URI:-http://letto-math.nw-letto:8092}
      - letto_demo_uri=${LETTO_DEMO_URI:-http://letto-demo.nw-letto:8093}
      - letto_mail_uri=${LETTO_MAIL_URI:-http://letto-mail.nw-letto:8094}
      - letto_login_uri=${LETTO_LOGIN_URI:-http://letto-login.nw-letto:8095}
      - letto_setup_uri=${LETTO_SETUP_URI:-http://letto-setup.nw-letto:8096}
      - letto_print_uri=${LETTO_PRINT_URI:-http://letto-print.nw-letto:8098}
      - letto_export_uri=${LETTO_EXPORT_URI:-http://letto-export.nw-letto:8099}
      - letto_beurteilung_uri=${LETTO_BEURTEILUNG_URI:-http://letto-beurteilung.nw-letto:8100}
      - letto_test_uri=${LETTO_TEST_URI:-http://letto-test.nw-letto:8101}
      - letto_question_uri=${LETTO_QUESTION_URI:-http://letto-question.nw-letto:8102}
      - letto_plugin_uri=${LETTO_PLUGIN_URI:-http://letto-plugin.nw-letto:8200}
      - letto_pluginsourcecode_uri=${LETTO_PLUGINSOURCECODE_URI:-http://letto-pluginsourcecode.nw-letto:8204}
      - letto_lettoedit_uri=${LETTO_LETTOEDIT_URI:-http://letto-edit.nw-letto:8103}
      - letto_lehrplan_uri=${LETTO_LEHRPLAN_EXTERN_URI:-https://lehrplan.letto.at}
      - letto_servername==${LETTO_1_SERVER_NAME:-${SERVER_NAME}}
      - letto_letto_uri=${LETTO_1_LETTO_URI:-http://localhost:8080}
      - letto_login_uri_extern=${LETTO_1_LOGIN_URI_EXTERN:-https://localhost/login}
      - letto_letto_uri_extern=${LETTO_1_LETTO_URI_EXTERN:-https://localhost/lettoexchange}
      - letto_useEdit=${LETTO_1_USEEDIT:-true}
      - letto_logout_missing_fingerprint=${LOGOUT_MISSING_FINGERPRINT:-false}
      - letto_public_js=/opt/letto/public/js
      - letto_use_http=${USE_HTTP:-0}
      - letto_use_ad_server=${LETTO_1_USE_AD_SERVER:-false}
      - CATALINA_OPTS=${LETTO_1_JAVA_OPTS_LETTO:-${JAVA_OPTS_LETTO:--Xms500m -Xmx1G}}
      - debug=${LETTO_1_LETTO_DEBUG:-${DEBUG:-false}}
      - logAD=${LETTO_1_LOGAD:-${logAD:-false}}
      - logmaxima=${LETTO_1_LOGMAXIMA:-${LOGMAXIMA:-false}}
    ports:
      - "${LETTO_1_DEBUG_PORT_LETTO:-4100}:5080"

    volumes:
      - ${VOLUME_PUBLIC:-/opt/letto/docker/public}/${LETTO_1_SCHOOL}:/opt/letto/public
      - ${VOLUME_IMAGES:-/opt/letto/docker/storage/images}:/opt/letto/images
      - ${VOLUME_PLUGINS:-/opt/letto/docker/storage/plugins}/${LETTO_1_SCHOOL}:/opt/letto/plugins
      - ${VOLUME_PLUGINS:-/opt/letto/docker/storage/plugins}/${LETTO_1_SCHOOL}tmp:/opt/letto/pluginstmp
      - ${VOLUME_PHOTOS:-/opt/letto/docker/storage/photos}/${LETTO_1_SCHOOL}:/opt/letto/photos
      - ${VOLUME_PROJEKTE:-/opt/letto/docker/storage/projekte}/${LETTO_1_SCHOOL}:/opt/letto/projekte
      - ${VOLUME_PRINT:-/opt/letto/docker/storage/print}:/opt/letto/print
      - ${VOLUME_EXPORT:-/opt/letto/docker/storage/export}:/opt/letto/export
      - ${VOLUME_LOG:-/opt/letto/docker/storage/log}/letto/${LETTO_1_SCHOOL}:/opt/letto/log
