version: '3.4'
services:
  netbox:
    image: netboxcommunity/netbox:latest
    restart: always
    env_file:
      - netbox.env
    depends_on:
      - postgres
      - redis
      - redis-cache
    ports:
      - "${PANEL_APP_PORT_HTTP}:8080"
    volumes:
      - ./netbox-media:/opt/netbox/netbox/media
      - ./netbox-reports:/etc/netbox/reports
      - ./netbox-scripts:/etc/netbox/scripts
    command: /opt/netbox/launch-netbox.sh
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/api/health/", "||", "exit", "1"]
      interval: 30s
      timeout: 10s
      retries: 5
    labels:
      org.opencontainers.image.source: https://github.com/netbox-community/netbox-docker
  postgres:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_DB: netbox
      POSTGRES_USER: netbox
      POSTGRES_PASSWORD: ${PANEL_DB_USER_PASSWORD}
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "netbox"]
      interval: 10s
      timeout: 5s
      retries: 5
  redis:
    image: redis:7-alpine
    restart: always
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
  redis-cache:
    image: redis:7-alpine
    restart: always
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
volumes:
  netbox-media:
  netbox-reports:
  netbox-scripts:
  postgres-data: 