services: devcontainer: depends_on: - db - setup image: mcr.microsoft.com/devcontainers/typescript-node:22 volumes: - ../..:/workspaces:cached network_mode: service:db command: sleep infinity db: image: mongo:8.0 container_name: mongodb command: mongod --replSet rs0 restart: unless-stopped hostname: mongodb volumes: - db-data:/data/db healthcheck: test: ['CMD', 'mongosh', '--eval', "db.adminCommand('ping')"] interval: 2s retries: 5 setup: image: mongo:8.0 depends_on: db: condition: service_healthy restart: on-failure # This will try to initiate the replica set, until it succeeds twice (i.e. until the replica set is already initialized) command: > mongosh --host mongodb:27017 --eval ' var cfg = { _id: "rs0", members: [ { _id: 0, host: "mongodb:27017" } ] }; try { rs.initiate(cfg); } catch (err) { if(err.codeName !== "AlreadyInitialized") throw err; } ' volumes: db-data: driver: local