services: ############################## PROXY ######################################## opendmp.proxy: restart: unless-stopped cpus: 1 mem_limit: 256m ports: - "${PROXY_APP_PORT}:8081" - "${PROXY_MS_PORT}:8082" env_file: - ./proxy/proxy.env volumes: - ./proxy/nginx.conf:/etc/nginx/nginx.conf - ./proxy/ProxyNginx.conf:/etc/nginx/conf.d/default.conf - ./logs/proxy:/tmp/logs networks: - opendmp-proxy-network ############################## OPENDMP APP ################################# opendmp.backend: restart: unless-stopped cpus: 1 mem_limit: 2048m environment: - PROFILE=${PROFILE} ports: - "8080" volumes: - ./opendmp/backend/config:/config - ./opendmp/backend/certificates:/certificates - ./opendmp/backend/i18n:/i18n - ./opendmp/backend/material:/material - ./opendmp/backend/Semantics.json:/Semantics.json - ./storage/opendmp/backend:/storage - ./logs/opendmp/backend:/logs networks: - opendmp-proxy-network - opendmp-backend-network - opendmp-plugins-network - opendmp-gotenberg-shared-network - opendmp-elastic-shared-network - opendmp-keycloak-shared-network - opendmp-postgres-shared-network - opendmp-rabbitmq-shared-network opendmp.frontend: restart: unless-stopped cpus: 1 mem_limit: 2048m ports: - "8080" volumes: - ./opendmp/frontend/config.json:/usr/share/nginx/html/assets/config/config.json - ./opendmp/frontend/nginx.conf:/etc/nginx/nginx.conf - ./opendmp/frontend/WebAppNginx.conf:/etc/nginx/conf.d/default.conf networks: - opendmp-proxy-network opendmp.notification: cpus: 1 mem_limit: 1024m restart: unless-stopped ports: - "8080" environment: - PROFILE=${PROFILE} volumes: - ./opendmp/notification/config:/config - ./opendmp/notification/messages:/messages - ./opendmp/notification/notification_templates:/notification_templates - ./logs/opendmp/notification-api:/logs networks: - opendmp-proxy-network - opendmp-backend-network - opendmp-plugins-network - opendmp-rabbitmq-shared-network - opendmp-keycloak-shared-network - opendmp-postgres-shared-network opendmp.annotation: cpus: 1 mem_limit: 1024m restart: unless-stopped ports: - "8080" environment: - PROFILE=${PROFILE} volumes: - ./opendmp/annotation/config:/config - ./opendmp/annotation/messages:/messages - ./logs/opendmp/annotation-api:/logs networks: - opendmp-proxy-network - opendmp-backend-network - opendmp-plugins-network - opendmp-rabbitmq-shared-network - opendmp-keycloak-shared-network - opendmp-postgres-shared-network # ############################## FILE-TRANSFORMER ################################# opendmp.file.transformer.docx: restart: unless-stopped cpus: 1 mem_limit: 1024m expose: - "8080" environment: - SERVER_PORT=${SERVER_PORT} - PROFILE=${PROFILE} volumes: - ./opendmp/file-transformer-docx/config:/config - ./logs/opendmp/file-transformer-docx:/logs - ./storage/opendmp/file-transformer-docx:/storage networks: - opendmp-backend-network - opendmp-plugins-network - opendmp-gotenberg-shared-network opendmp.file.transformer.rdajson: restart: unless-stopped cpus: 1 mem_limit: 1024m expose: - "8080" environment: - SERVER_PORT=${SERVER_PORT} - PROFILE=${PROFILE} volumes: - ./opendmp/file-transformer-rda-json/config:/config - ./opendmp/file-transformer-rda-json/internal:/internal - ./logs/opendmp/file-transformer-rda-json:/logs - ./storage/opendmp/file-transformer-rda-json:/storage networks: - opendmp-backend-network - opendmp-plugins-network ############################## ZENODO ####################################### opendmp.zenodo: restart: unless-stopped cpus: 1 mem_limit: 1024m expose: - "8080" environment: - PROFILE=${PROFILE} volumes: - ./opendmp/zenodo/config:/config - ./opendmp/zenodo/zenodo.jpg:/zenodo.jpg - ./storage/opendmp/zenodo:/storage - ./logs/opendmp/zenodo:/logs networks: - opendmp-plugins-network - opendmp-keycloak-shared-network ############################## POSTGRES 16 ################################# opendmp.postgres: restart: unless-stopped mem_limit: 2048M ports: # - "127.0.0.1:${POSTGRES_PORT}:5432" # If you want to make it accessible locally only - "${POSTGRES_PORT}:5432" env_file: - ./postgres/postgres.env volumes: - ./storage/postgres/data:/var/lib/postgresql/data - ./postgres/opendmp_init.sql:/docker-entrypoint-initdb.d/opendmp_init.sql - ./postgres/user_init.sql:/docker-entrypoint-initdb.d/user_init.sql networks: - opendmp-postgres-shared-network healthcheck: test: ["CMD-SHELL", "sh -c 'pg_isready -U opendmp-psql -d opendmp'"] interval: 15s timeout: 60s retries: 5 ################################# ELASTICSEARCH ################################################# opendmp.elasticsearch: restart: unless-stopped cpus: 2 mem_limit: 1024m env_file: - elk/elk.env environment: ES_JAVA_OPTS: -Xmx512m -Xms512m ulimits: nproc: 65535 memlock: soft: -1 hard: -1 volumes: - ./elk/elasticsearch/index_init.sh:/usr/share/elasticsearch/config/index_init.sh - ./elk/elasticsearch/log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties:ro - ./elk/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro - ./storage/elasticsearch:/usr/share/elasticsearch/data - ./logs/elasticsearch:/usr/share/elasticsearch/logs expose: - "9200" - "9300" networks: - opendmp-elastic-shared-network healthcheck: test: curl -s http://localhost:9200 >/dev/null; if [[ $$? == 52 ]]; then echo 0; else echo 1; fi interval: 30s timeout: 10s retries: 5 ############################## KEYCLOAK ############################################### # opendmp.keycloak: # restart: unless-stopped # command: ["start-dev", "--log=console,file", "--log-file=/tmp/logs/keycloak.log", "--import-realm"] # cpus: 2 # mem_limit: 2048M # env_file: # - keycloak/keycloak.env # environment: # - JAVA_OPTS_APPEND="-Djava.net.preferIPv4Stack=true" # volumes: # - ./logs/keycloak:/tmp/logs # - ./keycloak/imports/opendmp-realm.json:/opt/keycloak/data/import/opendmp-realm.json # expose: # - "8080" # networks: # - opendmp-proxy-network # - opendmp-postgres-shared-network # - opendmp-keycloak-shared-network ############################## RABBITMQ ############################################### opendmp.rabbitmq: labels: NAME: "rabbitmq" cpus: 1 mem_limit: 512m restart: unless-stopped ports: - "0.0.0.0:15672:15672" - "0.0.0.0:5672:5672" env_file: - rabbitmq/rabbitmq.env volumes: - /rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro networks: - opendmp-proxy-network - opendmp-rabbitmq-shared-network ############################## GOTENBERG ############################################## opendmp.gotenberg: cpus: 2 mem_limit: 2048m restart: unless-stopped expose: - "3000" hostname: gotenberg env_file: - gotenberg/gotenberg.env networks: - opendmp-gotenberg-shared-network networks: opendmp-proxy-network: name: opendmp-proxy-network opendmp-backend-network: name: opendmp-backend-network opendmp-plugins-network: name: opendmp-plugins-network opendmp-keycloak-shared-network: external: true name: opendmp-keycloak-shared-network opendmp-gotenberg-shared-network: external: true name: opendmp-gotenberg-shared-network opendmp-rabbitmq-shared-network: external: true name: opendmp-rabbitmq-shared-network opendmp-elastic-shared-network: external: true name: opendmp-elastic-shared-network opendmp-postgres-shared-network: external: true name: opendmp-postgres-shared-network