# Docker compose definition to run mist.io in production mode, so no mounted # code, no dev containers etc. Only this single file is required. version: '2.0' services: mongodb: image: mongo:3.2 restart: on-failure:5 volumes: - mongodb:/data/db:rw rabbitmq: image: mist/rabbitmq platform: linux/x86_64 restart: on-failure:5 environment: RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS: '-rabbitmq_stream advertised_host rabbitmq -rabbit loopback_users "none"' memcached: image: memcached:1.6.9 restart: on-failure:5 elasticsearch: image: elasticsearch:7.10.1 restart: on-failure:5 volumes: - elasticsearch:/usr/share/elasticsearch/data:rw environment: OPENSEARCH_JAVA_OPTS: "-Xms256M -Xmx256M" ES_JAVA_OPTS: "-Xms256M -Xmx256M" discovery.type: single-node logger.level: WARN # network.host: "172.18.0.2" # transport.host: "localhost" logstash: image: $IMG_REGISTRY/logstash:$IMG_TAG restart: on-failure:5 depends_on: - elasticsearch - rabbitmq elasticsearch-manage: platform: linux/x86_64 image: $IMG_REGISTRY/elasticsearch-manage:$IMG_TAG command: ./scripts/add_templates.py restart: on-failure:5 depends_on: - elasticsearch - rabbitmq kibana: platform: linux/x86_64 image: kibana:7.10.1 environment: ELASTICSEARCH_URL: http://elasticsearch:9200 restart: on-failure:5 depends_on: - elasticsearch socat: platform: linux/x86_64 image: mist/docker-socat restart: on-failure:5 volumes: - /var/run/docker.sock:/var/run/docker.sock:rw mailmock: platform: linux/x86_64 image: mist/mailmock restart: on-failure:5 swagger: platform: linux/x86_64 image: mist/swagger-ui environment: API_URL: /api/v1/spec restart: on-failure:5 apply-migrations: &boot platform: linux/x86_64 image: $IMG_REGISTRY/api:$IMG_TAG depends_on: - mongodb - elasticsearch - rabbitmq - vault-init - init-secrets volumes: - ./settings:$CONF_DIR/settings - approle:/approle - secrets:/secrets environment: SETTINGS_FILE: $CONF_DIR/settings/settings.py stdin_open: true tty: true restart: on-failure:5 command: bin/wait-all bin/migrate scheduler: &backend <<: *boot depends_on: - apply-migrations command: bin/wait-all bin/scheduler api: <<: *backend command: bin/wait-all bin/uwsgi platform: linux/x86_64 expose: - 80 api-v2: <<: *backend platform: linux/x86_64 command: uwsgi --http 0.0.0.0:8080 --wsgi-file v2/mist_api_v2/__main__.py --callable application --master --processes 8 --max-requests 100 --honour-stdin --enable-threads expose: - 8080 sockjs: <<: *backend platform: linux/x86_64 command: bin/wait-all bin/sockjs expose: - 8081 dramatiq: <<: *backend platform: linux/x86_64 command: bin/wait-all bin/dramatiq portal: image: $IMG_REGISTRY/portal:$IMG_TAG command: sh /entry.sh stdin_open: true tty: true restart: on-failure:5 expose: - 80 ui: image: $IMG_REGISTRY/ui:$IMG_TAG platform: linux/x86_64 command: sh /entry.sh stdin_open: true tty: true restart: on-failure:5 expose: - 80 landing: image: $IMG_REGISTRY/landing:$IMG_TAG platform: linux/x86_64 command: sh /entry.sh stdin_open: true tty: true restart: on-failure:5 expose: - 80 nginx: image: $IMG_REGISTRY/nginx:$IMG_TAG platform: linux/x86_64 restart: on-failure:5 ports: - 80:80 depends_on: - api - sockjs - landing - ui vminsert: image: victoriametrics/vminsert:v1.60.0-cluster command: - '--influxTrimTimestamp=1s' - '--storageNode=vmstorage:8400' ports: - 8480 vmstorage: image: victoriametrics/vmstorage:v1.60.0-cluster command: - '--retentionPeriod=12' - '--storageDataPath=/var/lib/victoria-metrics-data' ports: - 8400 - 8401 - 8482 volumes: - victoria-metrics:/var/lib/victoria-metrics-data vmselect: image: victoriametrics/vmselect:v1.60.0-cluster command: - '--search.latencyOffset=0s' - '--search.cacheTimestampOffset=15m' - '--storageNode=vmstorage:8401' - '--search.maxQueryLen=1GiB' ports: - 8481 influxdb: image: influxdb:1.8.4 platform: linux/x86_64 environment: INFLUXDB_DB: telegraf INFLUXDB_BIND_ADDRESS: "0.0.0.0:8088" ports: - 8083:8083 - 8086:8086 volumes: - influxdb:/var/lib/influxdb gocky: image: $IMG_REGISTRY/gocky:$IMG_TAG platform: linux/x86_64 command: -config /etc/gocky/config.toml ports: - 9096:9096 - 9097:9097 depends_on: - rabbitmq traefik: image: traefik:v1.5 platform: linux/x86_64 command: # - --logLevel=INFO - --accesslog # - --accesslog.format=json - --api - --api.entrypoint=traefik - --rest - --rest.entrypoint=traefik - --defaultentrypoints=http - --entrypoints=Name:http Address::80 - --entrypoints=Name:traefik Address::8080 ports: - 8040:80 - 8041:8080 sheller: depends_on: - init-secrets - rabbitmq image: $IMG_REGISTRY/sheller:$IMG_TAG platform: linux/x86_64 command: /app --listen 0.0.0.0:8086 volumes: - secrets:/secrets environment: RABBITMQ_HOST: rabbitmq RABBITMQ_USERNAME: guest RABBITMQ_PASSWORD: guest expose: - 8086 wsproxy: image: $IMG_REGISTRY/wsproxy:$IMG_TAG platform: linux/x86_64 expose: - 8764 vault: image: $IMG_REGISTRY/vault:$IMG_TAG expose: - "8200" restart: on-failure:5 volumes: - vault-data:/vault/data:rw - vault-config:/vault/config:rw cap_add: - IPC_LOCK entrypoint: /vault-start.sh vault-init: depends_on: - vault image: $IMG_REGISTRY/vault:$IMG_TAG volumes: - vault-config:/vault/config:rw - vault-policies:/vault/policies:rw - approle:/approle entrypoint: [ "/bin/sh", "-c" ] command: - | /bin/wait-for vault:8200 /init/vault-init.sh environment: - VAULT_ADDR=http://vault:8200 init-secrets: <<: *backend depends_on: - mongodb - elasticsearch - rabbitmq - vault-init volumes: - secrets:/secrets:rw entrypoint: [ "/bin/sh", "-c"] command: - ./bin/init-secrets volumes: elasticsearch: {} influxdb: {} mongodb: {} victoria-metrics: {} vault-data: {} vault-config: {} vault-policies: {} approle: {} secrets: {}