--- services: << service_name >>: image: docker.io/netboxcommunity/netbox:v4.5.10 restart: << restart_policy >> environment: <%- if container_timezone %> - TIME_ZONE=<< container_timezone >> <%- endif %> <%- if traefik_enabled %> - ALLOWED_HOSTS=<< traefik_host >>.<< traefik_domain >> <%- else %> - ALLOWED_HOSTS=* <%- endif %> <%- if database_external %> - DB_HOST=<< database_host >> <%- else %> - DB_HOST=<< service_name >>_postgres <%- endif %> - DB_NAME=<< database_name >> - DB_USER=${DATABASE_USER} - DB_PASSWORD=${DATABASE_PASSWORD} - REDIS_HOST=<< service_name >>_redis - REDIS_PASSWORD=${REDIS_PASSWORD} - REDIS_CACHE_HOST=<< service_name >>_redis-cache - REDIS_CACHE_PASSWORD=${REDIS_PASSWORD} - SECRET_KEY=${NETBOX_SECRET_KEY} <%- if netbox_metrics_enabled %> - METRICS_ENABLED=true <%- endif %> <%- if email_enabled %> - EMAIL_SERVER=<< email_host >> - EMAIL_PORT=<< email_port >> - EMAIL_FROM=<< email_from >> - EMAIL_USERNAME=${EMAIL_USERNAME} - EMAIL_PASSWORD=${EMAIL_PASSWORD} <%- if email_encryption == "ssl" %> - EMAIL_USE_SSL=True <%- elif email_encryption == "starttls" %> - EMAIL_USE_TLS=True <%- endif %> <%- endif %> networks: <%- if traefik_enabled %> << traefik_network >>: <%- endif %> << service_name >>_backend: <%- if not traefik_enabled %> ports: - "<< ports_http >>:8080" <%- endif %> volumes: - << service_name >>_media:/opt/netbox/netbox/media - << service_name >>_reports:/opt/netbox/netbox/reports - << service_name >>_scripts:/opt/netbox/netbox/scripts <%- if traefik_enabled %> labels: - traefik.enable=true - traefik.docker.network=<< traefik_network >> - traefik.http.services.<< service_name >>_web.loadBalancer.server.port=8080 - traefik.http.routers.<< service_name >>_http.service=<< service_name >>_web - traefik.http.routers.<< service_name >>_http.rule=Host(`<< traefik_host >>.<< traefik_domain >>`) - traefik.http.routers.<< service_name >>_http.entrypoints=<< traefik_entrypoint >> <%- if traefik_tls_enabled %> - traefik.http.routers.<< service_name >>_https.service=<< service_name >>_web - traefik.http.routers.<< service_name >>_https.rule=Host(`<< traefik_host >>.<< traefik_domain >>`) - traefik.http.routers.<< service_name >>_https.entrypoints=<< traefik_tls_entrypoint >> - traefik.http.routers.<< service_name >>_https.tls=true - traefik.http.routers.<< service_name >>_https.tls.certresolver=<< traefik_tls_certresolver >> <%- endif %> <%- endif %> depends_on: <%- if not database_external %> - << service_name >>_postgres <%- endif %> - << service_name >>_redis - << service_name >>_redis-cache << service_name >>_worker: image: docker.io/netboxcommunity/netbox:v4.5.10 restart: << restart_policy >> command: - /opt/netbox/venv/bin/python - /opt/netbox/netbox/manage.py - rqworker environment: <%- if container_timezone %> - TIME_ZONE=<< container_timezone >> <%- endif %> <%- if database_external %> - DB_HOST=<< database_host >> <%- else %> - DB_HOST=<< service_name >>_postgres <%- endif %> - DB_NAME=<< database_name >> - DB_USER=${DATABASE_USER} - DB_PASSWORD=${DATABASE_PASSWORD} - REDIS_HOST=<< service_name >>_redis - REDIS_PASSWORD=${REDIS_PASSWORD} - REDIS_CACHE_HOST=<< service_name >>_redis-cache - REDIS_CACHE_PASSWORD=${REDIS_PASSWORD} - SECRET_KEY=${NETBOX_SECRET_KEY} <%- if netbox_metrics_enabled %> - METRICS_ENABLED=true <%- endif %> <%- if email_enabled %> - EMAIL_SERVER=<< email_host >> - EMAIL_PORT=<< email_port >> - EMAIL_FROM=<< email_from >> - EMAIL_USERNAME=${EMAIL_USERNAME} - EMAIL_PASSWORD=${EMAIL_PASSWORD} <%- if email_encryption == "ssl" %> - EMAIL_USE_SSL=True <%- elif email_encryption == "starttls" %> - EMAIL_USE_TLS=True <%- endif %> <%- endif %> networks: << service_name >>_backend: volumes: - << service_name >>_media:/opt/netbox/netbox/media - << service_name >>_reports:/opt/netbox/netbox/reports - << service_name >>_scripts:/opt/netbox/netbox/scripts depends_on: <%- if not database_external %> - << service_name >>_postgres <%- endif %> - << service_name >> - << service_name >>_redis - << service_name >>_redis-cache << service_name >>_redis: image: docker.io/library/redis:8.6.2-alpine restart: << restart_policy >> command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"] environment: - REDIS_PASSWORD=${REDIS_PASSWORD} networks: << service_name >>_backend: volumes: - << service_name >>_redis:/data << service_name >>_redis-cache: image: docker.io/library/redis:8.6.2-alpine restart: << restart_policy >> command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"] environment: - REDIS_PASSWORD=${REDIS_PASSWORD} networks: << service_name >>_backend: volumes: - << service_name >>_redis-cache:/data <%- if not database_external %> << service_name >>_postgres: image: docker.io/library/postgres:17.9 restart: << restart_policy >> environment: <%- if container_timezone %> - TZ=<< container_timezone >> <%- endif %> - POSTGRES_USER=${DATABASE_USER} - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=<< database_name >> healthcheck: test: ["CMD-SHELL", "pg_isready -U << database_user >>"] start_period: 30s interval: 10s timeout: 10s retries: 5 networks: - << service_name >>_backend volumes: - << service_name >>_postgres:/var/lib/postgresql/data <%- endif %> networks: << service_name >>_backend: driver: bridge <%- if traefik_enabled %> << traefik_network >>: external: true <%- endif %> volumes: <%- if not database_external %> << service_name >>_postgres: driver: local <%- endif %> << service_name >>_redis: driver: local << service_name >>_redis-cache: driver: local << service_name >>_media: driver: local << service_name >>_reports: driver: local << service_name >>_scripts: driver: local