Starter bundles for different environments:

EnvironmentNotesBundle
Python 3Just Python 3 w/ uvpython-starter.tar.gz
Django 4Just Django w/ SQLite;
Python 3.11; Django 4.2.19
django4-starter.tar.gz
Django 5Django 5.2 w/ SQLite;
Python 3.14; uv
django5-starter.tar.gz
Django 4 with CeleryDjango / Celery / SQLite / RabbitMQ;
Python 3.11, Django 4.2.19, Celery 5.4.0
django4-celery-starter.tar.gz
GoJust Gogolang-starter.tar.gz
LangflowPython 3.12 / uv 0.8.15langflow-python-3.12-starter.tar.gz
Node.jsNode.js 20.10 / vite.jsnodejs-starter.tar.gz
NextjsNode 22.9 / Next.jsnextjs-starter.tar.gz
OpenJDK with MavenMaven 3.9.9 / OpenJDK 23java-maven-openjdk23.tar.gz

How to use:

mkdir myproject
cd myproject
tar xvzf {downloaded .tar.gz file}
docker compose build

All these should have an “app” service / container that you can shell in. The source files are mapped (via host mount) to the /code subdirectory inside the container.

Important:

Check docker-compose.yml and Dockerfile to see if there are additional setup instructions.

Shelling in:

docker compose run --rm --service-ports app /bin/bash

Remember to add the --service-ports option so that the shell instance exports the port(s) needed to access the server from the host outside the container.

How These Were Created

On a MacBook Pro, I created the necessary files and tested them, then I ran:

cd myproject
tar -cvzf {file.tar.gz} --exclude="**/__pycache__/*" .dockerignore .git .gitignore .python-version docker-compose.yml Dockerfile pyproject.toml README.md {...}

where {file.tar.gz} is the tar.gz file name and {...} are files and subdirectories beyond the basic files listed.