diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000000..6be8840971c --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,8 @@ +{ + "name": "freeCodeCampDC", + "dockerComposeFile": "docker-compose.yml", + "service": "devcontainer", + "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", + // "features": {}, + "forwardPorts": [3000, 8000] +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 00000000000..f55103a923f --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,31 @@ +services: + devcontainer: + depends_on: + - mongo-db + - mongo-setup + image: mcr.microsoft.com/devcontainers/typescript-node:22 + volumes: + - ../..:/workspaces:cached + network_mode: service:mongo-db + command: sleep infinity + + mongo-db: + image: mongo + command: mongod --replSet rs0 + restart: unless-stopped + volumes: + - mongodb-data:/data/db + mongo-setup: + image: mongo + depends_on: + - mongo-db + restart: on-failure + entrypoint: [ + 'bash', + '-c', + # This will try to initiate the replica set, until it succeeds twice (i.e. until the replica set is already initialized) + 'mongosh --host mongo-db:27017 --eval ''try {rs.initiate();} catch (err) { if(err.codeName !== "AlreadyInitialized") throw err };''' + ] + +volumes: + mongodb-data: