# End-to-end test stack. A mock NetBox token API (in-memory, no database) plus # two secrets-engine hosts running the exact same plugin binary: HashiCorp Vault # and OpenBao. Bind mounts use ":z" so they work under SELinux. services: netbox: image: golang:1.25-alpine working_dir: /src environment: MOCKNETBOX_ADDR: ":8080" MOCKNETBOX_TOKEN: "nbt_admkey.admsecret" GOFLAGS: "-mod=mod" command: ["go", "run", "./test/mocknetbox"] volumes: - ..:/src:ro,z ports: - "8080:8080" healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:8080/healthz"] interval: 3s timeout: 3s retries: 40 vault: image: hashicorp/vault:1.18 depends_on: netbox: condition: service_healthy cap_add: [IPC_LOCK] environment: VAULT_DEV_ROOT_TOKEN_ID: root VAULT_ADDR: http://127.0.0.1:8200 VAULT_TOKEN: root command: ["server", "-dev", "-dev-listen-address=0.0.0.0:8200", "-config=/vault/vault.hcl"] volumes: - ../dist:/vault/plugins:ro,z - ./vault/vault.hcl:/vault/vault.hcl:ro,z ports: ["8200:8200"] healthcheck: test: ["CMD", "vault", "status", "-address=http://127.0.0.1:8200"] interval: 3s timeout: 3s retries: 20 openbao: image: openbao/openbao:latest depends_on: netbox: condition: service_healthy cap_add: [IPC_LOCK] environment: BAO_DEV_ROOT_TOKEN_ID: root BAO_ADDR: http://127.0.0.1:8200 BAO_TOKEN: root command: ["server", "-dev", "-dev-listen-address=0.0.0.0:8200", "-config=/openbao/bao.hcl"] volumes: - ../dist:/openbao/plugins:ro,z - ./openbao/bao.hcl:/openbao/bao.hcl:ro,z ports: ["8300:8200"] healthcheck: test: ["CMD", "bao", "status", "-address=http://127.0.0.1:8200"] interval: 3s timeout: 3s retries: 20