### # Copyright (c) 2015-2017 Mainflux # # Mainflux is licensed under an Apache license, version 2.0 license. # All rights not explicitly granted in the Apache license, version 2.0 are reserved. # See the included LICENSE file for more details. ### version: "3" networks: mainflux-base-net: driver: bridge volumes: mainflux-users-db-volume: mainflux-things-db-volume: mainflux-mqtt-redis-volume: mainflux-things-redis-volume: mainflux-es-redis-volume: services: nginx: image: nginx:1.16.0-alpine container_name: mainflux-nginx restart: on-failure volumes: - ./nginx/nginx-${AUTH-key}.conf:/etc/nginx/nginx.conf.template - ./nginx/entrypoint.sh:/entrypoint.sh - ./ssl/authorization.js:/etc/nginx/authorization.js - ./ssl/certs/mainflux-server.crt:/etc/ssl/certs/mainflux-server.crt - ./ssl/certs/ca.crt:/etc/ssl/certs/ca.crt - ./ssl/certs/mainflux-server.key:/etc/ssl/private/mainflux-server.key - ./ssl/dhparam.pem:/etc/ssl/certs/dhparam.pem ports: - ${MF_NGINX_HTTP_PORT}:${MF_NGINX_HTTP_PORT} - ${MF_NGINX_SSL_PORT}:${MF_NGINX_SSL_PORT} - ${MF_NGINX_MQTT_PORT}:${MF_NGINX_MQTT_PORT} networks: - mainflux-base-net environment: MF_UI_PORT: ${MF_UI_PORT} command: /entrypoint.sh nats: image: nats:1.3.0 container_name: mainflux-nats restart: on-failure networks: - mainflux-base-net users-db: image: postgres:10.8-alpine container_name: mainflux-users-db restart: on-failure environment: POSTGRES_USER: ${MF_USERS_DB_USER} POSTGRES_PASSWORD: ${MF_USERS_DB_PASS} POSTGRES_DB: ${MF_USERS_DB} networks: - mainflux-base-net volumes: - mainflux-users-db-volume:/var/lib/postgresql/data users: image: mainflux/users:latest container_name: mainflux-users depends_on: - users-db expose: - ${MF_USERS_GRPC_PORT} restart: on-failure environment: MF_USERS_LOG_LEVEL: ${MF_USERS_LOG_LEVEL} MF_USERS_DB_HOST: users-db MF_USERS_DB_PORT: ${MF_USERS_DB_PORT} MF_USERS_DB_USER: ${MF_USERS_DB_USER} MF_USERS_DB_PASS: ${MF_USERS_DB_PASS} MF_USERS_DB: ${MF_USERS_DB} MF_USERS_HTTP_PORT: ${MF_USERS_HTTP_PORT} MF_USERS_GRPC_PORT: ${MF_USERS_GRPC_PORT} MF_USERS_SECRET: ${MF_USERS_SECRET} ports: - ${MF_USERS_HTTP_PORT}:${MF_USERS_HTTP_PORT} networks: - mainflux-base-net things-db: image: postgres:10.8-alpine container_name: mainflux-things-db restart: on-failure environment: POSTGRES_USER: ${MF_THINGS_DB_USER} POSTGRES_PASSWORD: ${MF_THINGS_DB_PASS} POSTGRES_DB: ${MF_THINGS_DB} networks: - mainflux-base-net volumes: - mainflux-things-db-volume:/var/lib/postgresql/data things-redis: image: redis:5.0-alpine container_name: mainflux-things-redis restart: on-failure networks: - mainflux-base-net volumes: - mainflux-things-redis-volume:/data things: image: mainflux/things:latest container_name: mainflux-things depends_on: - things-db - users restart: on-failure environment: MF_THINGS_LOG_LEVEL: ${MF_THINGS_LOG_LEVEL} MF_THINGS_DB_HOST: things-db MF_THINGS_DB_PORT: ${MF_THINGS_DB_PORT} MF_THINGS_DB_USER: ${MF_THINGS_DB_USER} MF_THINGS_DB_PASS: ${MF_THINGS_DB_PASS} MF_THINGS_DB: ${MF_THINGS_DB} MF_THINGS_CACHE_URL: things-redis:${MF_REDIS_TCP_PORT} MF_THINGS_ES_URL: es-redis:${MF_REDIS_TCP_PORT} MF_THINGS_HTTP_PORT: ${MF_THINGS_HTTP_PORT} MF_THINGS_AUTH_HTTP_PORT: ${MF_THINGS_AUTH_HTTP_PORT} MF_THINGS_AUTH_GRPC_PORT: ${MF_THINGS_AUTH_GRPC_PORT} MF_USERS_URL: users:${MF_USERS_GRPC_PORT} MF_THINGS_SECRET: ${MF_THINGS_SECRET} ports: - ${MF_THINGS_HTTP_PORT}:${MF_THINGS_HTTP_PORT} - ${MF_THINGS_AUTH_HTTP_PORT}:${MF_THINGS_AUTH_HTTP_PORT} - ${MF_THINGS_AUTH_GRPC_PORT}:${MF_THINGS_AUTH_GRPC_PORT} networks: - mainflux-base-net normalizer: image: mainflux/normalizer:latest container_name: mainflux-normalizer restart: on-failure depends_on: - nats environment: MF_NORMALIZER_LOG_LEVEL: ${MF_NORMALIZER_LOG_LEVEL} MF_NATS_URL: ${MF_NATS_URL} MF_NORMALIZER_PORT: ${MF_NORMALIZER_PORT} ports: - ${MF_NORMALIZER_PORT}:${MF_NORMALIZER_PORT} networks: - mainflux-base-net ws-adapter: image: mainflux/ws:latest container_name: mainflux-ws depends_on: - things - nats restart: on-failure environment: MF_WS_ADAPTER_LOG_LEVEL: ${MF_WS_ADAPTER_LOG_LEVEL} MF_WS_ADAPTER_PORT: ${MF_WS_ADAPTER_PORT} MF_NATS_URL: ${MF_NATS_URL} MF_THINGS_URL: things:${MF_THINGS_AUTH_GRPC_PORT} ports: - ${MF_WS_ADAPTER_PORT}:${MF_WS_ADAPTER_PORT} networks: - mainflux-base-net http-adapter: image: mainflux/http:latest container_name: mainflux-http depends_on: - things - nats restart: on-failure environment: MF_HTTP_ADAPTER_LOG_LEVEL: debug MF_HTTP_ADAPTER_PORT: ${MF_HTTP_ADAPTER_PORT} MF_NATS_URL: ${MF_NATS_URL} MF_THINGS_URL: things:${MF_THINGS_AUTH_GRPC_PORT} ports: - ${MF_HTTP_ADAPTER_PORT}:${MF_HTTP_ADAPTER_PORT} networks: - mainflux-base-net es-redis: image: redis:5.0-alpine container_name: mainflux-es-redis restart: on-failure networks: - mainflux-base-net volumes: - mainflux-es-redis-volume:/data mqtt-redis: image: redis:5.0-alpine container_name: mainflux-mqtt-redis restart: on-failure networks: - mainflux-base-net volumes: - mainflux-mqtt-redis-volume:/data mqtt-adapter: image: mainflux/mqtt:latest container_name: mainflux-mqtt depends_on: - things - nats - mqtt-redis restart: on-failure environment: MF_MQTT_ADAPTER_LOG_LEVEL: ${MF_MQTT_ADAPTER_LOG_LEVEL} MF_MQTT_INSTANCE_ID: mqtt-adapter-1 MF_MQTT_ADAPTER_PORT: ${MF_MQTT_ADAPTER_PORT} MF_MQTT_ADAPTER_WS_PORT: ${MF_MQTT_ADAPTER_WS_PORT} MF_MQTT_ADAPTER_REDIS_HOST: mqtt-redis MF_MQTT_ADAPTER_ES_HOST: es-redis MF_NATS_URL: ${MF_NATS_URL} MF_THINGS_URL: things:${MF_THINGS_AUTH_GRPC_PORT} ports: - ${MF_MQTT_ADAPTER_PORT}:${MF_MQTT_ADAPTER_PORT} - ${MF_MQTT_ADAPTER_WS_PORT}:${MF_MQTT_ADAPTER_WS_PORT} networks: - mainflux-base-net coap-adapter: image: mainflux/coap:latest container_name: mainflux-coap depends_on: - things - nats restart: on-failure environment: MF_COAP_ADAPTER_LOG_LEVEL: ${MF_COAP_ADAPTER_LOG_LEVEL} MF_COAP_ADAPTER_PORT: ${MF_COAP_ADAPTER_PORT} MF_NATS_URL: ${MF_NATS_URL} MF_THINGS_URL: things:${MF_THINGS_AUTH_GRPC_PORT} ports: - ${MF_COAP_ADAPTER_PORT}:${MF_COAP_ADAPTER_PORT}/udp networks: - mainflux-base-net ui: image: mainflux/ui:latest container_name: mainflux-ui restart: on-failure ports: - ${MF_UI_PORT}:${MF_UI_PORT} networks: - mainflux-base-net environment: MF_UI_PORT: ${MF_UI_PORT}