Skip to main content
README.md2.6 KB
View on GitHub

Devcontainer Example

This example demonstrates how to configure devcontainers in Atmos as a replacement for the Geodesic shell wrapper.

Files

  • devcontainer.json - Geodesic devcontainer configuration (VS Code compatible)
  • atmos.yaml - Atmos configuration with multiple devcontainer definitions

Usage

Using the Default Geodesic Devcontainer

# Create and attach to the default devcontainer (Geodesic)
atmos devcontainer start default --attach

# Inside the container
terraform plan
atmos terraform apply vpc -s ue2-dev

Using Named Devcontainers

# Create Terraform-specific devcontainer
atmos devcontainer start terraform --attach

# Create Python devcontainer
atmos devcontainer start python --attach

Using Multiple Instances

# Create multiple instances of the same devcontainer
atmos devcontainer start default --instance alice --attach
atmos devcontainer start default --instance bob --attach

# List all running devcontainers
atmos devcontainer list

Configuration Methods

Method 1: Import existing devcontainer.json

devcontainers:
default: !include devcontainer.json

This imports the VS Code-compatible devcontainer.json file. Unsupported fields (like features, customizations, postCreateCommand) are silently ignored and logged at debug level.

Method 2: Define inline in atmos.yaml

devcontainers:
terraform:
name: "Terraform Dev"
image: "hashicorp/terraform:1.6"
forwardPorts: [8080, 3000]
# ... more configuration

Method 3: Merge imported config with overrides

devcontainers:
custom:
<<: !include devcontainer.json
# Override specific fields
forwardPorts: [9000, 9001]

Port Forwarding Examples

Simple Port Mapping

forwardPorts:
- 8080 # Maps 8080:8080
- 3000 # Maps 3000:3000

Explicit Port Mapping

forwardPorts:
- "8080:8080" # Explicit host:container
- "3001:3000" # Map host 3001 to container 3000

With Port Attributes

forwardPorts:
- 8080

portsAttributes:
"8080":
label: "Web Server"
protocol: "http"

Commands

# Start and attach to devcontainer
atmos devcontainer start <name> --attach

# Start devcontainer without attaching
atmos devcontainer start <name>

# Stop running container
atmos devcontainer stop <name>

# Attach to running container
atmos devcontainer attach <name>

# Execute command in container
atmos devcontainer exec <name> -- terraform plan

# List containers
atmos devcontainer list

# Remove container
atmos devcontainer remove <name>

# Show configuration
atmos devcontainer config <name>

Related Documentation