version: "3.7" # Userdefined Networks networks: proxy: driver: bridge ipam: driver: default config: - subnet: 172.20.0.0/24 database: redis: mesh-mongodb: # Docker managed persistent volumes volumes: # Volume for userdefined scripts scripts: # Volume for mesh token initial setup mesh_token: services: # Postgres Database for API service db: image: postgres:12 environment: POSTGRES_DB: tacticalrmm POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASS} networks: - database # Redis Container for Celery tasks redis: image: redis networks: - redis # Salt Master and API salt: build: context: .. dockerfile: ./docker/salt/dockerfile args: - SALT_USER=${SALT_USER} - SALT_PASS=${SALT_PASS} ports: - "4505:4505" - "4506:4506" volumes: - scripts:/srv networks: - proxy # MeshCentral Container meshcentral: build: context: ./meshcentral args: - MESH_HOST=${MESH_HOST} - MESH_USER=${MESH_USER} - MESH_PASS=${MESH_PASS} - EMAIL_USER=${EMAIL_USER} - MONGODB_USER=${MONGODB_USER} - MONGODB_PASSWORD=${MONGODB_PASSWORD} networks: - proxy - mesh-mongodb volumes: - mesh_token:/token depends_on: - mesh-mongodb - nginx-proxy # MongoDB Container for MeshCentral mesh-mongodb: image: mongo environment: MONGO_INITDB_ROOT_USERNAME: ${MONGODB_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD} MONGO_INITDB_DATABASE: meshcentral networks: - mesh-mongodb # Nginx Container Reverse Proxy that handles all http/https traffic nginx-proxy: build: context: ./nginx-proxy args: - APP_HOST=${APP_HOST} - API_HOST=${API_HOST} - MESH_HOST=${MESH_HOST} ports: - "80:80" - "443:443" networks: proxy: ipv4_address: 172.20.0.20