version: '3.4' services: netbox: &netbox image: netboxcommunity/netbox:${VERSION-latest} depends_on: - postgres - redis - redis-cache - netbox-worker env_file: env/netbox.env user: '101' volumes: - ./startup_scripts:/opt/netbox/startup_scripts:z,ro - ./initializers:/opt/netbox/initializers:z,ro - ./configuration:/etc/netbox/config:z,ro - ./reports:/etc/netbox/reports:z,ro - ./scripts:/etc/netbox/scripts:z,ro - netbox-nginx-config:/etc/netbox-nginx:z - netbox-static-files:/opt/netbox/netbox/static:z - netbox-media-files:/opt/netbox/netbox/media:z - type: tmpfs target: /tmp/metrics read_only: false netbox-worker: <<: *netbox depends_on: - redis entrypoint: - python3 - /opt/netbox/netbox/manage.py command: - rqworker # nginx nginx: command: nginx -c /etc/netbox-nginx/nginx.conf image: nginx:1.19-alpine depends_on: - netbox ports: - 8080 volumes: - netbox-static-files:/opt/netbox/netbox/static:ro - netbox-nginx-config:/etc/netbox-nginx/:ro nginx-exporter: image: nginx/nginx-prometheus-exporter depends_on: - nginx command: - -nginx.scrape-uri - http://nginx:8081/stub_status # postgres postgres: image: postgres:12-alpine env_file: env/postgres.env volumes: - netbox-postgres-data:/var/lib/postgresql/data postgres-exporter: image: wrouesnel/postgres_exporter:v0.8.0 depends_on: - postgres env_file: env/postgres-exporter.env # redis redis: &redis image: redis:6-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env - redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose env_file: env/redis-worker.env volumes: - netbox-redis-data:/data redis-cache: image: redis:6-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env - redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose env_file: env/redis-cache.env redis-worker-exporter: image: oliver006/redis_exporter depends_on: - redis env_file: env/redis-worker-exporter.env redis-cache-exporter: image: oliver006/redis_exporter depends_on: - redis-cache env_file: env/redis-cache-exporter.env # prometheus prometheus: image: prom/prometheus:v2.22.0 depends_on: - postgres-exporter - redis-cache-exporter - redis-worker-exporter - nginx-exporter - netbox ports: - 9090 volumes: - ./monitoring/prometheus/:/etc/prometheus/ - prometheus-data:/prometheus/data # grafana grafana: image: grafana/grafana:7.2.1 depends_on: - prometheus ports: - 3000 volumes: - ./monitoring/grafana/plugins/:/var/lib/grafana/plugins/:z,ro - ./monitoring/grafana/provisioning/:/etc/grafana/provisioning/:z,ro - ./monitoring/grafana/dashboards/:/etc/grafana/dashboards/:z,ro - grafana-data:/var/lib/grafana volumes: netbox-static-files: driver: local netbox-nginx-config: driver: local netbox-media-files: driver: local netbox-postgres-data: driver: local netbox-redis-data: driver: local prometheus-data: driver: local grafana-data: driver: local