Auto-generate Dockerfiles, docker-compose, and GitHub Actions for Django + React/Vite/Next.js projects. Zero config. Production-ready.
Project description
deployfilegen
deployfilegen is a production-grade Python CLI that auto-generates Dockerfiles, docker-compose.yml, and GitHub Actions workflows for Django + React/Next.js/Vite projects.
One command. Zero config. Production-ready.
pip install deployfilegen
deployfilegen init --mode dev # Dev environment — just works
deployfilegen init --mode prod # Production — hardened & optimized
⚡ Demo
$ deployfilegen init --mode dev
Generating Backend Dockerfile...
Generated backend/Dockerfile
Generating Frontend Dockerfile...
Generated frontend/Dockerfile
Generating Docker Compose...
Generated docker-compose.dev.yml
Deployment configuration generated successfully!
$ docker compose -f docker-compose.dev.yml up --build
# ✅ Backend at http://localhost:8000
# ✅ Frontend at http://localhost:5173 (Vite auto-detected)
📁 Expected Project Structure
my-project/
├── .env # Your environment variables
├── backend/
│ ├── manage.py # Django project
│ └── requirements.txt
├── frontend/
│ ├── package.json # React/Vite/Next.js
│ └── src/
│
│── # Generated by deployfilegen ──────────
├── backend/Dockerfile ← generated
├── frontend/Dockerfile ← generated
├── docker-compose.dev.yml ← generated (dev mode)
├── docker-compose.prod.yml ← generated (prod mode)
└── .github/workflows/
└── deploy.yml ← generated (prod mode)
🚀 Key Features
- Zero-Config Dev Mode: Works with any existing
.envfile. No forced variable naming. - Smart Framework Detection: Auto-detects Vite (port 5173), Next.js (port 3000), or CRA.
- Flexible Deployment: SSH Build (default) or Registry Push — you choose.
- Production-Grade Defaults:
- Non-root users, unprivileged Nginx
- Healthchecks, restart policies
- Multi-stage builds,
.dockerignoregeneration
📦 Deployment Strategies
SSH Build (Default — No Registry Needed)
deployfilegen init --mode prod --deploy ssh
Required .env (only 2 variables!):
DEPLOY_HOST=your_server_ip
DEPLOY_USER=ubuntu
CI/CD workflow: SSH → git pull → docker compose build → up -d
Registry Push (Advanced — Immutable Deployments)
deployfilegen init --mode prod --deploy registry
Required .env:
# Always required
DEPLOY_HOST=your_server_ip
DEPLOY_USER=ubuntu
# Only for --deploy registry
DOCKER_USERNAME=your_username
BACKEND_IMAGE_NAME=user/backend
FRONTEND_IMAGE_NAME=user/frontend
CI/CD workflow: Build → Push to Registry → SSH → docker compose pull → up -d
🛠 Supported Stacks
| Component | Framework | Auto-Detected |
|---|---|---|
| Backend | Django | Project name from manage.py |
| Frontend | Vite | Port 5173, --host binding |
| Frontend | Next.js | Port 3000, -H binding |
| Frontend | CRA | Port 3000, HOST env |
⚙️ Configuration
Generate a boilerplate .env:
deployfilegen template # SSH mode (minimal)
deployfilegen template --deploy registry # Registry mode (full)
📖 CLI Reference
Usage: deployfilegen init [OPTIONS]
Options:
--mode [dev|prod] Generation mode (Default: prod)
--deploy [ssh|registry] Deployment strategy (Default: ssh)
--force, -f Overwrite existing files
--with-db Include a Postgres service
# Scope Control
--docker-only Generate only Dockerfiles
--compose-only Generate only docker-compose.yml
--github-only Generate only GitHub Actions (Prod only)
--backend-only Only generate backend assets
--frontend-only Only generate frontend assets
# Override Detection
--frontend-port INT Override detected frontend dev port
--start-command TEXT Override detected frontend start command
--project-name TEXT Override detected Django project name
--help Show this message
🔧 Troubleshooting
"Missing required variables" error in prod mode?
deployfilegen template # SSH: just DEPLOY_HOST + DEPLOY_USER
deployfilegen template --deploy registry # Registry: adds DOCKER_USERNAME + IMAGE_NAMEs
Frontend container exits immediately?
deployfilegen init --mode dev --start-command "serve" --force
Wrong port detected?
deployfilegen init --mode dev --frontend-port 8080 --force
Django project name wrong?
deployfilegen init --mode prod --project-name my_project --force
📄 License
MIT
Project details
Release history Release notifications | RSS feed
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 deployfilegen-0.1.34.tar.gz.
File metadata
- Download URL: deployfilegen-0.1.34.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34c08d478d0332ee4fe254afcaa0e9cd15488ed64c6b1663bb6f14c50784ae7c
|
|
| MD5 |
ce48baaa482837407e20bb48a092d141
|
|
| BLAKE2b-256 |
df5e99e209f3341a0063c499381ef582e4c5dc5acaf77c4c27af60689d70d505
|
File details
Details for the file deployfilegen-0.1.34-py3-none-any.whl.
File metadata
- Download URL: deployfilegen-0.1.34-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c84dcb7f9606131f7df8b05fac2f3630173b9da038d30fce2b74f6d633c65318
|
|
| MD5 |
608ddeaf71909d8479578a9e270d11f2
|
|
| BLAKE2b-256 |
9e22d74cb49152320230e932f9ef59635aab16945457f8de120cd1725c16fb1d
|