Generate tailored Dockerfiles for development environments
Project description
StackForDev
Docker as your dev environment. Select a language and stack, get a tailored Dockerfile — no local language installation required.
Instead of installing Python, Node, Go, Rust, or Java on your machine, StackForDev generates a Dockerfile that acts as a transparent runtime proxy. You run commands inside the container against your volume-mounted project files. Your host stays clean.
Quick Start
pip install stackfordev
# Bootstrap a complete dev workspace in one command
stackfordev init -l python -s "Django Stack" -v 3.12
# Then:
docker compose build
source devrun.sh
devrun python manage.py runserver
Or just generate a Dockerfile:
stackfordev generate -l python -s "Django Stack" -v 3.12 --compose -o ./Dockerfile
Usage
# Bootstrap a full workspace (Dockerfile + docker-compose.yml + .dockerignore + devrun.sh)
stackfordev init -l python -s "Django Stack" -v 3.12
stackfordev init # interactive mode
# Interactive mode (prompts for missing options)
stackfordev generate
# Non-interactive
stackfordev generate -l python -s "Django Stack" -v 3.12
# With extra dependencies
stackfordev generate -l python -s "Data Science Stack" -v 3.11 -e "numpy,pandas,scikit-learn"
# Save to file
stackfordev generate -l go -s "Gin Stack" -v 1.23 -o ./Dockerfile
# Also generate docker-compose.yml and .dockerignore
stackfordev generate -l python -s "Django Stack" -v 3.12 --compose -o ./Dockerfile
# Generate offline (no API call)
stackfordev generate -l javascript -s "Express Stack" -v 22 --local
# Raw JSON output
stackfordev generate -l rust -s "Actix-Web Stack" -v 1.82 --json
# Show all supported languages, versions, and stacks
stackfordev info
Supported Languages & Stacks
Use stackfordev info for a live table. Summary:
| Language | Versions | Stacks |
|---|---|---|
| Python | 3.9, 3.10, 3.11, 3.12 | Django Stack, Flask Stack, Data Science Stack, Web Scraping Stack, Machine Learning Stack |
| JavaScript | 18, 20, 22 | Express Stack, React Stack, Vue.js Stack, Node.js API Stack, Full-Stack JavaScript |
| Go | 1.21, 1.22, 1.23 | Gin Stack, Beego Stack, Web Framework Stack, Microservices Stack, Data Processing Stack |
| Rust | 1.80, 1.81, 1.82 | Actix-Web Stack, CLI Tools Stack, WebAssembly Stack |
| Java | 11, 17, 21 | Spring Boot Stack, Maven Build Stack, Gradle Build Stack |
CLI Options
stackfordev generate [OPTIONS]
-l, --language TEXT Programming language
-s, --stack TEXT Dependency stack (e.g. 'Django Stack')
-v, --version TEXT Language version (e.g. 3.12)
-e, --extras TEXT Comma-separated extra dependencies
-o, --output PATH Save Dockerfile to path
--compose Also generate docker-compose.yml and .dockerignore
--local Generate offline without API call
--json Output raw JSON response
--help Show this message and exit.
stackfordev info Show supported languages, versions, and stacks
stackfordev init [OPTIONS]
-l, --language TEXT Programming language
-s, --stack TEXT Dependency stack
-v, --version TEXT Language version
-e, --extras TEXT Comma-separated extra dependencies
-d, --directory PATH Target directory (default: current directory)
--help Show this message and exit.
How It Works
- Select language, stack, and version (interactively or via flags)
- The CLI calls the StackForDev API, or generates locally with
--local - A tailored Dockerfile (and optionally
docker-compose.yml+.dockerignore) is returned - Build the image and run commands inside the container — no local language installation needed
Architecture
Request flow:
CLI / API call
→ API Gateway (rate-limited, CORS)
→ AWS Lambda (Python 3.11, container runtime, ECR)
→ Pydantic validation + injection checks
→ Template substitution (language + stack + version)
→ S3 dedup check → upload
→ JSON response {dockerfile, key, message}
Infrastructure: AWS Lambda + API Gateway + S3 + ECR, provisioned with Terraform. CloudWatch alarms monitor error rate and throttles. S3 lifecycle policy manages storage costs automatically.
Monitoring
- Errors alarm: fires when Lambda errors ≥ 5 in a 5-minute window → SNS notification
- Throttles alarm: fires when Lambda throttles ≥ 10 in a 5-minute window
- Log retention: CloudWatch Logs retained for 30 days, structured as JSON for Logs Insights queries
- Concurrency cap: Lambda reserved concurrency set to 10 to prevent runaway scaling
Contributing
See CONTRIBUTING.md for local setup, how to run tests, and how to add a new language template in 4 steps.
Changelog
See CHANGELOG.md.
License
MIT — see LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stackfordev-0.2.3.tar.gz.
File metadata
- Download URL: stackfordev-0.2.3.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd7ebb11310969d05d535f85637ea94ce45990bd941c8f6664b5d3ea23d204c5
|
|
| MD5 |
67f73bf16afac58cd701507dc0c91d74
|
|
| BLAKE2b-256 |
b921a59ca8fb250f40c00be9be450cce40558b1853de3481402bc78b69764f55
|
Provenance
The following attestation bundles were made for stackfordev-0.2.3.tar.gz:
Publisher:
workflow.yml on ZisisKostakakis/StackForDev
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stackfordev-0.2.3.tar.gz -
Subject digest:
cd7ebb11310969d05d535f85637ea94ce45990bd941c8f6664b5d3ea23d204c5 - Sigstore transparency entry: 976722746
- Sigstore integration time:
-
Permalink:
ZisisKostakakis/StackForDev@07741027607816d4007d617633f0368f949fb9e2 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/ZisisKostakakis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@07741027607816d4007d617633f0368f949fb9e2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file stackfordev-0.2.3-py3-none-any.whl.
File metadata
- Download URL: stackfordev-0.2.3-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d57647f6a4326e5bed1cace04d05a99d7836e1902c5e890cf0923ec7d46e362
|
|
| MD5 |
f4059ef738a5d92b6f403bfc664ec740
|
|
| BLAKE2b-256 |
b08602df564b1385257d2f33fedf3b01ca9e1dd7a2d6ddc626e56b24b4e1beae
|
Provenance
The following attestation bundles were made for stackfordev-0.2.3-py3-none-any.whl:
Publisher:
workflow.yml on ZisisKostakakis/StackForDev
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stackfordev-0.2.3-py3-none-any.whl -
Subject digest:
0d57647f6a4326e5bed1cace04d05a99d7836e1902c5e890cf0923ec7d46e362 - Sigstore transparency entry: 976722747
- Sigstore integration time:
-
Permalink:
ZisisKostakakis/StackForDev@07741027607816d4007d617633f0368f949fb9e2 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/ZisisKostakakis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@07741027607816d4007d617633f0368f949fb9e2 -
Trigger Event:
push
-
Statement type: