README.md2.6 KB
View on GitHubDevcontainer 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>