services: netbox: &netbox image: ${IMAGE-docker.io/netboxcommunity/netbox:latest} depends_on: postgres: condition: service_healthy redis: condition: service_healthy redis-cache: condition: service_healthy env_file: env/netbox.env user: 'unit:root' volumes: - ./test-configuration/test_config.py:/etc/netbox/config/test_config.py:z,ro healthcheck: test: curl -f http://localhost:8080/api/ || exit 1 start_period: ${NETBOX_START_PERIOD-120s} timeout: 3s interval: 15s netbox-worker: <<: *netbox command: - /opt/netbox/venv/bin/python - /opt/netbox/netbox/manage.py - rqworker healthcheck: test: ps -aux | grep -v grep | grep -q rqworker || exit 1 start_period: 40s timeout: 3s interval: 15s netbox-housekeeping: <<: *netbox command: - /opt/netbox/housekeeping.sh healthcheck: test: ps -aux | grep -v grep | grep -q housekeeping || exit 1 start_period: 40s timeout: 3s interval: 15s postgres: image: docker.io/postgres:16-alpine env_file: env/postgres.env healthcheck: test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER ## $$ because of docker-compose start_period: 20s interval: 1s timeout: 5s retries: 5 redis: &redis image: docker.io/valkey/valkey:7.2-alpine command: - sh - -c # this is to evaluate the $REDIS_PASSWORD from the env - valkey-server --save "" --appendonly no --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose env_file: env/redis.env healthcheck: test: "[ $$(valkey-cli --pass \"$${REDIS_PASSWORD}\" ping) = 'PONG' ]" start_period: 5s timeout: 3s interval: 1s retries: 5 redis-cache: <<: *redis env_file: env/redis-cache.env volumes: netbox-media-files: driver: local