Devcontainer Build

A streamlined approach to building development containers with Mise for tool version management and chezmoi for dotfiles synchronization, featuring automated setup and DevPod integration for portable development environments.

Prerequisites

  • Docker installed and running
  • DevPod CLI installed
  # Configure DevPod for terminal-based workflow (Neovim)
  devpod ide use none
  devpod provider add docker

Directory Structure

.devcontainer/
├── devcontainer.json
├── Dockerfile
└── scripts
    └── setup

Dockerfile

# Dockerfile
FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04

COPY --from=jdxcode/mise /usr/local/bin/mise /usr/local/bin/

# make sure mise is activated in both zsh and bash. Might be overridden by a user's dotfiles.
RUN echo 'eval "$(mise activate bash)"' >> /home/vscode/.bashrc && \
    echo 'eval "$(mise activate zsh)"' >> /home/vscode/.zshrc

Devcontainer

# devcontainer.json
{
  "build": {
    "context": "..",
    "dockerfile": "Dockerfile"
  },
  "remoteEnv": {
    "MISE_GITHUB_TOKEN": "${localEnv:MISE_GITHUB_TOKEN}"
  },
  "postCreateCommand": ".devcontainer/scripts/setup",
  "forwardPorts": [8000]
}

Script/setup

#!/bin/bash
/usr/local/bin/mise trust /workspaces/"$DEVPOD_WORKSPACE_ID"/mise.toml && /usr/local/bin/mise install

Build

devpod up . --dotfiles [email protected]:affragak/dotfiles-devpod.git

Connect

devpod ssh .

my DevOps Odyssey

“Σα βγεις στον πηγαιμό για την Ιθάκη, να εύχεσαι να ‘ναι μακρύς ο δρόμος, γεμάτος περιπέτειες, γεμάτος γνώσεις.” - Kavafis’ Ithaka.



Devcontainer

2025-06-14

Series:lab

Categories:devops

Tags:#docker, #devcontainer, #devops, #lab


Devcontainer Build: