Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Container Project Management

Author: Darrell D, Feb 2026

abstract alien planet

Why

As a learner I am building new projects often; it is helpful if they are self documented and reproducible.

What podman gives you

A container that is independent of the host system, which allows you to build, run and deploy consistently.

What mise gives you

toml with bash run blocks avoids mixed language code for the most part

Mise is way to group and label a series of tasks, make a clear menu of those tasks, and provide you with feedback on each step. It can also act as a general purpose version manager, though, it is only used as a runner here.

if a line from a run block returns non 0, the run block stops, that is why false on a line by itself disables a task. Also, if you don’t care if a command succeeds you can append || true

You may end up recreating containers over top of existing mount, so mkdir will fail, but we don’t want the script to abort

What it looks like

devcontainers, the vscode / github codespaces containerized form are better than no containers,

but vscode obfuscates folder paths for your mount point (deep in ~.local) and a container image is created for every project, which pollutes your image directory, it also uses unrelated name, that is super annoying because you are correlating the stupid names with my stupid brain is incredible irritation

So what I’ve done here is each project starts in a folder with the mise.toml file, which provides tasks for creating and using a container. The container will have a name the same as the project. There is a user inside the container with the same name as your current user on the host. The project files will be mounted in a folder called mount, and when you enter the container that folder becomes your home folder inside the container.

You can work on your project files from outside the container in the mount folder, but you should build, run, deploy etc from the container to get a clean room.

Steps

  1. Install Mise and Podman, refer to podman.mise.toml

  2. create a folder for your project hello

mkdir hello
cd hello
  1. Place mise.toml Container Manager script inside the project folder
wget https://raw.githubusercontent.com/dirtslayer/project/refs/heads/main/mise.toml
  1. Review mise.toml

    • remove false’s at start of run section to enable task
    • add your tooling to the PACKAGES variable in the setup-container task
  2. mise run, to show task menu

  3. steps in order of: 90, 99 from the mise.toml will create and setup your container

    the container will have the same name as your project

  4. disable steps 90,91,99 in the mise.toml

  5. mise run, 01 to work on your project

  6. mise run, 02 to update / install software inside container

  7. enjoy not having to use devcontainers!

  8. Star The Repo

Link: project repo

  1. Create an Issue, Create a PR

This scaffold is for Debian host and arch container. One could create other similar variations, like arch as a host with an alpine container.

My First PeerTube