Skip to content

DevContainer

A fully pre-configured development environment that eliminates "works on my machine" issues.

What's Included

The DevContainer provides:

  • 20+ CI/CD tools pre-installed: actionlint, hadolint, golangci-lint, gitleaks, shellcheck, trivy, and more
  • 40+ VS Code extensions auto-installed: language servers, formatters, AI assistants, Docker, Git tools
  • All language runtimes: Go, Python, Node.js, with version management
  • Pre-commit hooks pre-configured and ready to run

Two Operating Modes

Mode 1: Single Container (Default)

Lightweight, fast startup. A single Docker container with everything you need.

json
// .devcontainer/devcontainer.json (default)
{
  "build": {
    "dockerfile": "Dockerfile",
    "context": ".."
  }
}

Mode 2: Docker Compose (Multi-service)

Includes additional backend services for full-stack development.

Available services:

  • PostgreSQL — Relational database
  • Redis — Cache and message broker

To enable Docker Compose mode:

  1. Open .devcontainer/devcontainer.json
  2. Comment out the build section
  3. Uncomment the dockerComposeFile section:
json
{
  "dockerComposeFile": "docker-compose.yaml",
  "service": "app",
  "workspaceFolder": "/workspace"
}
  1. Rebuild the container (F1Dev Containers: Rebuild Container)

Usage

Local Development

  1. Open VS Code with Docker Desktop running
  2. Click "Reopen in Container" in the notification that appears
  3. Or: F1Dev Containers: Reopen in Container

Remote SSH Development

  1. Connect to your remote server via Remote - SSH
  2. Open the project folder
  3. F1Dev Containers: Reopen in Container

VS Code builds and runs the container on the remote server's Docker engine — all compute stays remote.

Customization

Custom Base Image

Modify the FROM line in .devcontainer/Dockerfile:

dockerfile
# Default
FROM mcr.microsoft.com/devcontainers/base:ubuntu

# Custom enterprise image
FROM your-registry.example.com/your-base-image:latest

Ensure your image has a vscode user, or adjust remoteUser in devcontainer.json.

Adding Extensions

Add extensions to devcontainer.json:

json
{
  "customizations": {
    "vscode": {
      "extensions": ["existing.extensions", "your.new-extension"]
    }
  }
}

Post-Create Commands

The DevContainer runs make install after creation to install project dependencies automatically.

Released under the MIT License.