Late last year, I completely changed my dev stack to Python on Linux with some other things. I wrote a series about it at the time:
- Part I: Intro and Rationale
- Part II: Linux
- Part III: Python/Django
- Part IV: HTMX
- Part V: VSCode and Copilot
- Part VI: Bulma
- Part VII: Sqlite
- Part VIII: uv
- Part IX: tooling
- Part X: networking
- Part XI: Sandboxing
In Part XI, I described using KVM (a full virtualized VM) and specifically not Docker. At the time, I wrote:
Docker: I am not that comfortable with it, and it seems like running GUIs (like VSCode) is not trivial. It would be more efficient with sharing installed software, but wasting disk space is just not an issue.
After using a VM for several months, I have decided to bite the bullet and learn Docker more and get comfortable with it. I’m not trying to run VSCode in it, just terminal based coding agents (which I will describe in a future post).
My setup is simple. I started with a Dockerfile based on node because I wanted to use Pi.dev and that is installed via npm. I gave it the minimal tools needed to build my project (a game built with C and Raylib), which is just gcc, X11, OpenGL, and a few other things.
To harden the security, I created a docker private network and put the Docker into that network. From there it has no internet or network access at all. I opened up one port so that the Docker could talk to Ollama on my host machine.
In the next post of this series, I’ll elaborate on the entire local AI and Pi.dev setup.