{"id":23629589,"url":"https://github.com/brakmic/jsdev","last_synced_at":"2026-04-10T02:43:24.632Z","repository":{"id":270012159,"uuid":"909132522","full_name":"brakmic/JSDev","owner":"brakmic","description":"A Dockerfile-based development environment optimized for JavaScript, TypeScript, and Node.js projects, seamlessly integrating with VS Code Dev Containers.","archived":false,"fork":false,"pushed_at":"2025-03-06T15:22:58.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-28T14:57:44.142Z","etag":null,"topics":["devcontainer","docker","javascript","nodejs","typescript","vscode"],"latest_commit_sha":null,"homepage":"https://blog.brakmic.com","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brakmic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-27T20:17:32.000Z","updated_at":"2025-03-06T15:23:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"ecb4475a-0c52-45d3-9eca-e65137344f55","html_url":"https://github.com/brakmic/JSDev","commit_stats":null,"previous_names":["brakmic/jsdev"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/brakmic/JSDev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2FJSDev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2FJSDev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2FJSDev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2FJSDev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brakmic","download_url":"https://codeload.github.com/brakmic/JSDev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2FJSDev/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262748483,"owners_count":23358210,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devcontainer","docker","javascript","nodejs","typescript","vscode"],"created_at":"2024-12-28T01:15:55.997Z","updated_at":"2026-04-10T02:43:24.563Z","avatar_url":"https://github.com/brakmic.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JSDev Docker Image\n\n![Docker Pulls](https://img.shields.io/docker/pulls/brakmic/jsdev)\n![Docker Image Size](https://img.shields.io/docker/image-size/brakmic/jsdev)\n![License](https://img.shields.io/github/license/brakmic/jsdev)\n\n## Overview\n\nJSDev is a streamlined Docker image tailored for JavaScript, TypeScript, and Node.js development. Built on Ubuntu 22.04, it provides a robust and customizable environment, equipping developers with all the essential tools to build, test, and deploy modern web applications efficiently.\n\nFor developers who require Docker tools within their development environment, an extended version of this image is also available, integrating essential Docker utilities seamlessly.\n\n## Features\n\n### Base Image: `brakmic/jsdev:latest`\n\n- **Ubuntu 22.04 Base:** Reliable and up-to-date operating system.\n- **Node.js v22:** Latest stable version for cutting-edge JavaScript features.\n- **pnpm Package Manager:** Fast and efficient package management.\n- **Global Development Tools:**\n  - TypeScript\n  - ts-node\n  - ESLint\n  - Prettier\n  - node-gyp\n- **Non-Root User:** `jsdev` user with passwordless sudo for enhanced security.\n- **Enhanced Terminal Experience:**\n  - Nano with syntax highlighting\n  - Custom shell aliases for productivity\n  - Colorized prompt for better readability\n- **Development Ready:** Pre-installed build essentials, Git, Git LFS, Python3, and more.\n\n### Extended Image: `brakmic/jsdev-docker:latest`\n\n- **Includes All Features of `brakmic/jsdev:latest`**\n- **Docker Tools Installed:**\n  - **Docker Engine (`docker-ce`):** Core Docker functionality for container management.\n  - **Docker CLI (`docker-ce-cli`):** Command-line interface for interacting with Docker.\n  - **Containerd (`containerd.io`):** High-level container runtime.\n  - **Docker Buildx Plugin (`docker-buildx-plugin`):** Advanced builder CLI plugin for multi-platform builds.\n  - **Docker Compose Plugin (`docker-compose-plugin`):** Tool for defining and running multi-container Docker applications.\n- **Configured Docker Group:**\n  - The `jsdev` user is added to the `docker` group, allowing Docker commands to be executed without `sudo`.\n\n## Getting Started\n\n### Prerequisites\n\n- [Docker](https://www.docker.com/get-started) installed on your machine.\n- (Optional) [Visual Studio Code](https://code.visualstudio.com/) with the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension for an integrated development experience.\n\n### Pull the Docker Images\n\n#### Pull the Base Image\n\n```bash\ndocker pull brakmic/jsdev:latest\n```\n\n#### Pull the Extended Image (with Docker Tools)\n\n```bash\ndocker pull brakmic/jsdev-docker:latest\n```\n\n### Running the Containers\n\n#### Running the Base JSDev Container\n\nTo start a container using the `jsdev` image:\n\n```bash\ndocker run -it --name my-jsdev-container brakmic/jsdev:latest\n```\n\nThis command will launch an interactive bash shell within the container.\n\n#### Running the Extended JSDev Docker Container\n\nTo start a container using the `jsdev-docker` image with Docker tools:\n\n```bash\ndocker run -it --name my-jsdev-docker-container brakmic/jsdev-docker:latest\n```\n\nThis command will launch an interactive bash shell within the container, with Docker tools installed and configured for the `jsdev` user.\n\n### Using with VS Code Dev Containers\n\nTo leverage the full potential of the JSDev Docker images within Visual Studio Code:\n\n1. **Create a `.devcontainer` Directory:**\n\n   In the root of your project, create a `.devcontainer` folder.\n\n2. **Add `devcontainer.json`:**\n\n   Inside `.devcontainer`, create a `devcontainer.json` file with the following content:\n\n   ```json\n   {\n     \"name\": \"JSDev Container\",\n     \"image\": \"brakmic/jsdev:latest\", // Use \"brakmic/jsdev-docker:latest\" if Docker tools are needed\n     \"workspaceFolder\": \"/workspace\",\n     \"workspaceMount\": \"source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached\",\n     \"customizations\": {\n       \"vscode\": {\n         \"settings\": {\n           \"files.exclude\": {\n             \"**/.git\": true,\n             \"**/.DS_Store\": true\n           }\n         }\n       }\n     },\n     \"mounts\": [\n       \"source=${localWorkspaceFolder}/.devcontainer/setup-workspace.mjs,target=/workspace/.devcontainer/setup-workspace.mjs,type=bind\"\n     ],\n     \"postCreateCommand\": \"node /workspace/.devcontainer/setup-workspace.mjs \u0026\u0026 ln -sf /workspace/dev.code-workspace /home/jsdev/.vscode-server/dev.code-workspace\",\n     \"remoteUser\": \"jsdev\"\n   }\n   ```\n\n   - **Note:** If you intend to use Docker tools within the Dev Container, update the `\"image\"` field to `\"brakmic/jsdev-docker:latest\"`.\n\n3. **Add Setup Scripts:**\n\n   Place any necessary setup scripts (e.g., `setup-workspace.mjs`) inside the `.devcontainer` directory.\n\n4. **Open in VS Code:**\n\n   Open your project in VS Code. You should see a prompt to reopen the project in a Dev Container. Confirm to start using the JSDev environment.\n\n## Customization\n\nFeel free to modify the Dockerfiles or the `devcontainer.json` to suit your specific development needs. Whether it's adding new global packages, configuring additional tools, or adjusting user settings, JSDev is designed to be flexible and adaptable.\n\n## Contributing\n\nContributions are welcome! If you have suggestions, bug fixes, or improvements, please open an issue or submit a pull request.\n\n## 🐳 **Additional Information for the Extended Image**\n\nThe extended Docker image `brakmic/jsdev-docker:latest` is designed for developers who require Docker functionalities within their development environment. This setup is ideal for those working on containerized applications, microservices, or requiring Docker for testing and deployment processes.\n\n### **Installed Docker Tools:**\n\n- **Docker Engine (`docker-ce`):** Enables containerization and management of Docker containers.\n- **Docker CLI (`docker-ce-cli`):** Provides the command-line interface to interact with Docker.\n- **Containerd (`containerd.io`):** An industry-standard container runtime.\n- **Docker Buildx Plugin (`docker-buildx-plugin`):** Facilitates advanced image building capabilities, including multi-platform builds.\n- **Docker Compose Plugin (`docker-compose-plugin`):** Simplifies the management of multi-container Docker applications.\n\n### **User Configuration:**\n\n- **Docker Group Membership:** The `jsdev` user is part of the `docker` group, allowing seamless execution of Docker commands without the need for `sudo`. Verify by running:\n\n  ```bash\n  groups\n  ```\n\n  Expected output should include `docker`:\n\n  ```\n  jsdev sudo docker\n  ```\n\n### **Usage Example with Docker Tools:**\n\nAfter running the extended container, you can verify Docker installation:\n\n1. **Check Docker Version:**\n\n   ```bash\n   docker --version\n   ```\n\n   *Expected Output:*\n\n   ```\n   Docker version 20.10.7, build f0df350\n   ```\n\n2. **Run a Test Docker Container:**\n\n   ```bash\n   docker run hello-world\n   ```\n\n   *Expected Output:*\n\n   ```\n   Hello from Docker!\n   This message shows that your installation appears to be working correctly.\n   ...\n   ```\n   \n## License\n\nThis project is licensed under the [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrakmic%2Fjsdev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrakmic%2Fjsdev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrakmic%2Fjsdev/lists"}