Skip to main content

A production-grade CLI tool to generate deployment configuration files for Django/React projects.

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.33.tar.gz (18.7 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.33-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file deployfilegen-0.1.33.tar.gz.

File metadata

  • Download URL: deployfilegen-0.1.33.tar.gz
  • Upload date:
  • Size: 18.7 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.33.tar.gz
Algorithm Hash digest
SHA256 4956053f558c1d960664d0905ebfb6745b0f616f5d05c482e7b41591296d704a
MD5 651f39bfe57b85e841204e48c7146af3
BLAKE2b-256 19f4a5bf29ddad6772282ae6950a2cfaedf9319c9d8cb418ff2237e809f99417

See more details on using hashes here.

File details

Details for the file deployfilegen-0.1.33-py3-none-any.whl.

File metadata

  • Download URL: deployfilegen-0.1.33-py3-none-any.whl
  • Upload date:
  • Size: 18.6 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.33-py3-none-any.whl
Algorithm Hash digest
SHA256 8fda86aaab25283381e8224948d3e8a884ff351d7cef483e69616d0bb66de048
MD5 f23350d007a90b7a09176d8b891cf189
BLAKE2b-256 67f4726f7b996779ea67d26e3ec6e835276873665bd71bc7fc0a4da808bfc7a4

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