version: "3.8" services: mongodb: image: "mongo:4.2" volumes: - "mongodb_data:/data/db" restart: "on-failure" elasticsearch: environment: ES_JAVA_OPTS: "-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true" bootstrap.memory_lock: "true" discovery.type: "single-node" http.host: "0.0.0.0" action.auto_create_index: "false" image: "docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2" ulimits: memlock: hard: -1 soft: -1 volumes: - "es_data:/usr/share/elasticsearch/data" restart: "on-failure" graylog: image: "graylog/graylog:4.2" depends_on: elasticsearch: condition: "service_started" mongodb: condition: "service_started" entrypoint: "/usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh" environment: GRAYLOG_NODE_ID_FILE: "/usr/share/graylog/data/config/node-id" GRAYLOG_PASSWORD_SECRET: ${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file} GRAYLOG_ROOT_PASSWORD_SHA2: ${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file} GRAYLOG_ROOT_TIMEZONE: ${GRAYLOG_ROOT_TIMEZONE:?Please configure GRAYLOG_ROOT_TIMEZONE in the .env file} GRAYLOG_TRANSPORT_EMAIL_ENABLED: ${GRAYLOG_TRANSPORT_EMAIL_ENABLED:?Please configure GRAYLOG_TRANSPORT_EMAIL_ENABLED in the .env file} GRAYLOG_TRANSPORT_EMAIL_HOSTNAME: ${GRAYLOG_TRANSPORT_EMAIL_HOSTNAME:?Please configure GRAYLOG_TRANSPORT_EMAIL_HOSTNAME in the .env file} GRAYLOG_TRANSPORT_EMAIL_PORT: ${GRAYLOG_TRANSPORT_EMAIL_PORT:?Please configure GRAYLOG_TRANSPORT_EMAIL_PORT in the .env file} GRAYLOG_TRANSPORT_EMAIL_USE_AUTH: ${GRAYLOG_TRANSPORT_EMAIL_USE_AUTH:?Please configure GRAYLOG_TRANSPORT_EMAIL_USE_AUTH in the .env file} GRAYLOG_TRANSPORT_EMAIL_USE_TLS: ${GRAYLOG_TRANSPORT_EMAIL_USE_TLS:?Please configure GRAYLOG_TRANSPORT_EMAIL_USE_TLS in the .env file} GRAYLOG_TRANSPORT_EMAIL_USE_SSL: ${GRAYLOG_TRANSPORT_EMAIL_USE_SSL:?Please configure GRAYLOG_TRANSPORT_EMAIL_USE_SSL in the .env file} GRAYLOG_TRANSPORT_EMAIL_AUTH_USERNAME: ${GRAYLOG_TRANSPORT_EMAIL_AUTH_USERNAME:?Please configure GRAYLOG_TRANSPORT_EMAIL_AUTH_USERNAME in the .env file} GRAYLOG_TRANSPORT_EMAIL_AUTH_PASSWORD: ${GRAYLOG_TRANSPORT_EMAIL_AUTH_PASSWORD:?Please configure GRAYLOG_TRANSPORT_EMAIL_AUTH_PASSWORD in the .env file} GRAYLOG_TRANSPORT_EMAIL_SUBJECT_PREFIX: ${GRAYLOG_TRANSPORT_EMAIL_SUBJECT_PREFIX:?Please configure GRAYLOG_TRANSPORT_EMAIL_SUBJECT_PREFIX in the .env file} GRAYLOG_TRANSPORT_EMAIL_FROM_EMAIL: ${GRAYLOG_TRANSPORT_EMAIL_FROM_EMAIL:?Please configure GRAYLOG_TRANSPORT_EMAIL_FROM_EMAIL in the .env file} GRAYLOG_TRANSPORT_EMAIL_WEB_INTERFACE_URL: ${GRAYLOG_TRANSPORT_EMAIL_WEB_INTERFACE_URL:?Please configure GRAYLOG_TRANSPORT_EMAIL_WEB_INTERFACE_URL in the .env file} GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000" GRAYLOG_HTTP_EXTERNAL_URI: "http://localhost:9000/" GRAYLOG_ELASTICSEARCH_HOSTS: "http://elasticsearch:9200" GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog" ports: - "5044:5044/tcp" # Beats - "514:514/udp" # Syslog - "514:514/tcp" # Syslog - "5555:5555/tcp" # RAW TCP - "5555:5555/udp" # RAW TCP - "9001:9000/tcp" # Server API - "12201:12201/tcp" # GELF TCP - "12201:12201/udp" # GELF UDP #- "10000:10000/tcp" # Custom TCP port #- "10000:10000/udp" # Custom UDP port - "13301:13301/tcp" # Forwarder data - "13302:13302/tcp" # Forwarder config volumes: - "graylog_data:/usr/share/graylog/data/data" - "graylog_journal:/usr/share/graylog/data/journal" restart: "on-failure" volumes: mongodb_data: es_data: graylog_data: graylog_journal: