Skip to main content

Auto-generate Dockerfiles, docker-compose, and GitHub Actions for Django + React/Vite/Next.js projects. Zero config. Production-ready.

Project description

deployfilegen

PyPI version Downloads License: MIT Python 3.9+

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 .env file. 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, .dockerignore generation

📦 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deployfilegen-0.1.34.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deployfilegen-0.1.34-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

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

Hashes for deployfilegen-0.1.34.tar.gz
Algorithm Hash digest
SHA256 34c08d478d0332ee4fe254afcaa0e9cd15488ed64c6b1663bb6f14c50784ae7c
MD5 ce48baaa482837407e20bb48a092d141
BLAKE2b-256 df5e99e209f3341a0063c499381ef582e4c5dc5acaf77c4c27af60689d70d505

See more details on using hashes here.

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

Hashes for deployfilegen-0.1.34-py3-none-any.whl
Algorithm Hash digest
SHA256 c84dcb7f9606131f7df8b05fac2f3630173b9da038d30fce2b74f6d633c65318
MD5 608ddeaf71909d8479578a9e270d11f2
BLAKE2b-256 9e22d74cb49152320230e932f9ef59635aab16945457f8de120cd1725c16fb1d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page