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/backend:/storage # - logs/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/webapp/config.json:/usr/share/nginx/html/assets/config/config.json # - opendmp/webapp/nginx.conf:/etc/nginx/nginx.conf # - opendmp/webapp/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-api/config:/config # - opendmp/notification-api/messages:/messages # - opendmp/notification-api/notification_templates:/notification_templates # - logs/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-api/config:/config # - opendmp/annotation-api/messages:/messages # - logs/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/file-transformer-docx:/logs # - storage/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/file-transformer-rda-json:/logs # - storage/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 # - /logs/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 ################################# ELK ################################################# # elk.setup: # profiles: # - setup # build: # context: ./elk/setup/ # args: # ELASTIC_VERSION: ${ELASTIC_VERSION} # init: true # env_file: # - elk/elk.env # volumes: # - ./setup/entrypoint.sh:/entrypoint.sh:ro,Z # - ./setup/lib.sh:/lib.sh:ro,Z # - ./setup/roles:/roles:ro,Z # environment: # ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-} # LOGSTASH_INTERNAL_PASSWORD: ${LOGSTASH_INTERNAL_PASSWORD:-} # KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-} # METRICBEAT_INTERNAL_PASSWORD: ${METRICBEAT_INTERNAL_PASSWORD:-} # FILEBEAT_INTERNAL_PASSWORD: ${FILEBEAT_INTERNAL_PASSWORD:-} # HEARTBEAT_INTERNAL_PASSWORD: ${HEARTBEAT_INTERNAL_PASSWORD:-} # MONITORING_INTERNAL_PASSWORD: ${MONITORING_INTERNAL_PASSWORD:-} # BEATS_SYSTEM_PASSWORD: ${BEATS_SYSTEM_PASSWORD:-} # networks: # - opendmp-elastic-network # opendmp.elasticsearch: # restart: unless-stopped # cpus: 2 # mem_limit: 1024m # init: true # env_file: # - elk/elk.env # environment: # ES_JAVA_OPTS: -Xmx512m -Xms512m # node.name: elasticsearch # ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-} # ulimits: # nproc: 65535 # memlock: # soft: -1 # hard: -1 # volumes: # - ./elk/config-elk/elasticsearch/config/log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties:ro # - ./elk/config-elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro # - ./elk/data-elk/elasticsearch-data:/usr/share/elasticsearch/data # - ./elk/data-elk/elasticsearch-log:/usr/share/elasticsearch/logs # expose: # - "9200" # - "9300" # networks: # - opendmp-elastic-network # - opendmp-elastic-shared-network # healthcheck: # test: curl --cacert /usr/share/elasticsearch/config/certificates/ca/ca.crt -s https://localhost:9200 >/dev/null; if [[ $$? == 52 ]]; then echo 0; else echo 1; fi # interval: 30s # timeout: 10s # retries: 5 # opendmp.kibana: # restart: unless-stopped # cpus: 2 # mem_limit: 1024m # ulimits: # memlock: # soft: -1 # hard: -1 # environment: # - xpack.license.self_generated.type=basic # - xpack.security.enabled=true # volumes: # - ./elk/config-elk/kibana/config:/usr/share/kibana/config:ro # expose: # - "5601" # networks: # - opendmp-elastic-network # logstash: # build: # context: logstash/ # args: # ELASTIC_VERSION: ${ELASTIC_VERSION} # volumes: # - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z # - ./logstash/pipeline:/usr/share/logstash/pipeline:ro,Z # ports: # - 5044:5044 # - 50000:50000/tcp # - 50000:50000/udp # - 9600:9600 # environment: # LS_JAVA_OPTS: -Xms256m -Xmx256m # LOGSTASH_INTERNAL_PASSWORD: ${LOGSTASH_INTERNAL_PASSWORD:-} # networks: # - elk # depends_on: # - elasticsearch # restart: unless-stopped # # - /elk/data-elk/logstash-log:/usr/share/logstash/logs # opendmp.filebeat: # restart: unless-stopped # cpus: 1 # mem_limit: 1024m # ulimits: # memlock: # soft: -1 # hard: -1 # volumes: # - /var/run/docker.sock:/host_docker/docker.sock # - /var/lib/docker:/host_docker/var/lib/docker # - ./filebeat.yml:/usr/share/filebeat/filebeat.yml # command: ["--strict.perms=false"] # ulimits: # memlock: # soft: -1 # hard: -1 # stdin_open: true # tty: true # network_mode: bridge # deploy: # mode: global # logging: # driver: "json-file" # options: # max-size: "10m" # max-file: "50" ############################## KEYCLOAK ############################################### opendmp.keycloak: restart: unless-stopped command: ["start-dev", "--log=console,file", "--log-file=/tmp/logs/keycloak.log", "--import-realm"] cpus: 1 mem_limit: 1024M 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: mem_limit: 2048m restart: unless-stopped expose: - "3000" hostname: gotenberg env_file: - gotenberg/gotenberg.env networks: - opendmp-gotenberg-shared-network networks: opendmp-elastic-network: name: opendmp-elastic-network 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