devcontainers

$npx mdskill add TerminalSkills/skills/devcontainers

Define reproducible dev environments using Docker and VS Code

  • Standardize development setups across teams and projects
  • Uses Docker, VS Code, and GitHub Codespaces for containerization
  • Generates devcontainer.json and docker-compose.yml based on user needs
  • Delivers pre-configured environments with tools, ports, and extensions
SKILL.md
.github/skills/devcontainersView on GitHub ↗
---
name: devcontainers
description: >-
  Define reproducible development environments with Dev Containers. Use when a user asks to standardize dev environments, set up VS Code remote containers, create reproducible dev setups, or onboard developers faster.
license: Apache-2.0
compatibility: 'VS Code, GitHub Codespaces'
metadata:
  author: terminal-skills
  version: 1.0.0
  category: development
  tags:
    - devcontainers
    - docker
    - vscode
    - codespaces
    - reproducible
---

# Dev Containers

## Overview
Dev Containers define reproducible development environments in Docker. Open a repo in VS Code or GitHub Codespaces and get the exact same environment — tools, extensions, settings pre-installed.

## Instructions

### Step 1: Basic Config
```json
// .devcontainer/devcontainer.json — Dev environment definition
{
  "name": "My Project",
  "image": "mcr.microsoft.com/devcontainers/typescript-node:20",
  "features": {
    "ghcr.io/devcontainers/features/docker-in-docker:2": {},
    "ghcr.io/devcontainers/features/github-cli:1": {}
  },
  "forwardPorts": [3000, 5432],
  "postCreateCommand": "npm install",
  "customizations": {
    "vscode": {
      "extensions": [
        "dbaeumer.vscode-eslint",
        "esbenp.prettier-vscode"
      ],
      "settings": { "editor.formatOnSave": true }
    }
  }
}
```

### Step 2: With Database
```yaml
# .devcontainer/docker-compose.yml
services:
  app:
    image: mcr.microsoft.com/devcontainers/typescript-node:20
    volumes: [../:/workspace:cached]
    command: sleep infinity
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: myapp
    volumes: [pgdata:/var/lib/postgresql/data]
volumes:
  pgdata:
```

## Guidelines
- New developer: clone → open in VS Code → "Reopen in Container" → ready.
- Features marketplace adds tools without custom Dockerfiles.
- Works with GitHub Codespaces — same config, cloud-hosted.
More from TerminalSkills/skills