vscode-dev-containers/containers/javascript-node-mongo
Chuck Lantz 45adfa20c2 Regression test fixes (CI Ignore) 2021-06-01 21:13:24 +00:00
..
.devcontainer Remove pre-set terminal setting once 1.57 is released (#860) 2021-06-01 10:22:58 -07:00
.vscode Add nvm to Node images, move db images to use VARIANT 2020-05-11 07:48:41 -07:00
test-project Regression test fixes (CI Ignore) 2021-06-01 21:13:24 +00:00
.npmignore Ubuntu 18.04 => Ubuntu mutli-variant definition with 20.04 (#345) 2020-05-21 09:09:01 -07:00
README.md Update master to main (#864) 2021-05-25 06:51:04 -07:00

README.md

Node.js & Mongo DB

Summary

Develop applications in Node.js and Mongo DB. Includes Node.js, eslint, and yarn in a container linked to a Mongo DB.

Metadata Value
Contributors The VS Code Team
Categories Core, Languages
Definition type Docker Compose
Works in Codespaces Yes
Container host OS support Linux, macOS, Windows
Container OS Debian
Languages, platforms Node.js, JavaScript, Mongo DB

Using this definition

This definition creates two containers, one for Node.js and one for MongoDB. VS Code will attach to the Node.js container, and from within that container the MongoDB container will be available on on localhost port 27017 The MongoDB instance can be managed in VS Code via the automatically installed MongoDB extension. Database options can be configured in .devcontainer/docker-compose.yml and data is persisted in a volume called mongo-data.

While the definition itself works unmodified, it uses the mcr.microsoft.com/vscode/devcontainers/javascript-node image which includes git, eslint, zsh, Oh My Zsh!, a non-root vscode user with sudo access, and a set of common dependencies for development. You can pick a different version of this image by updating the VARIANT arg in .devcontainer/docker-compose.yml to pick either Node.js version 10, 12, or 14.

build:
  context: .
  dockerfile: Dockerfile
  args:
    VARIANT: 12

You also can connect to MongoDB from an external tool when using VS Code by updating .devcontainer/devcontainer.json as follows:

"forwardPorts": [ "27017" ]

Adding another service

You can add other services to your docker-compose.yml file as described in Docker's documentaiton. However, if you want anything running in this service to be available in the container on localhost, or want to forward the service locally, be sure to add this line to the service config:

# Runs the service on the same network as the database container, allows "forwardPorts" in devcontainer.json function.
network_mode: service:db

Adding the definition to a project or codespace

  1. If this is your first time using a development container, please see getting started information on setting up Remote-Containers or creating a codespace using GitHub Codespaces.

  2. Start VS Code and open your project folder or connect to a codespace.

  3. Press F1 select and Add Development Container Configuration Files... command for Remote-Containers or Codespaces.

    Note: If needed, you can drag-and-drop the .devcontainer folder from this sub-folder in a locally cloned copy of this repository into the VS Code file explorer instead of using the command.

  4. Select this definition. You may also need to select Show All Definitions... for it to appear.

  5. Finally, press F1 and run Remote-Containers: Reopen Folder in Container or Codespaces: Rebuild Container to start using the definition.

Testing the definition

This definition includes some test code that will help you verify it is working as expected on your system. Follow these steps:

  1. If this is your first time using a development container, please follow the getting started steps to set up your machine.
  2. Clone this repository.
  3. Start VS Code, press F1, and select Remote-Containers: Open Folder in Container...
  4. Select the containers/javascript-node-mongo folder.
  5. After the folder has opened in the container, press F5 to start the project. This will automatically run npm install before starting it.
  6. Once the project is running, press F1 and select Remote-Containers: Forward Port from Container...
  7. Select port 3000 and click the "Open Browser" button in the notification that appears.
  8. You should see "Hello remote world! 1 test record(s) found." after the page loads.
  9. From here, you can add breakpoints or edit the contents of the test-project folder to do further testing.

License

Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under the MIT License. See LICENSE.