version: "3.9" services: nginx: container_name: infisical-dev-nginx image: nginx restart: "always" ports: - 8080:80 - 8443:443 volumes: - ./nginx/default.dev.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - backend db: image: postgres:14-alpine ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data environment: POSTGRES_PASSWORD: infisical POSTGRES_USER: infisical POSTGRES_DB: infisical redis: image: redis container_name: infisical-dev-redis environment: - ALLOW_EMPTY_PASSWORD=yes ports: - 6379:6379 volumes: - redis_data:/data backend: container_name: infisical-dev-api build: context: ./backend dockerfile: Dockerfile.dev depends_on: db: condition: service_started redis: condition: service_started env_file: - .env ports: - 4000:4000 - 9464:9464 # for OTEL collection of Prometheus metrics environment: - NODE_ENV=development - DB_CONNECTION_URI=postgres://infisical:infisical@db/infisical?sslmode=disable - TELEMETRY_ENABLED=false volumes: - ./backend/src:/app/src - softhsm_tokens:/etc/softhsm2/tokens # SoftHSM tokens are stored in a volume to persist across container restarts extra_hosts: - "host.docker.internal:host-gateway" volumes: postgres-data: driver: local redis_data: driver: local softhsm_tokens: driver: local