Quran_Tech_Server / deployment_options.md
aboalaa147's picture
Initial deployment
eb6a2f9
|
Raw
History Blame Contribute Delete
3.46 kB

Deployment Options for Dockerized Quran App Suite

To deploy your Dockerized frontend and backend, you will generally follow a two-step workflow:

  1. Build and push your Docker images to a Container Registry (e.g., Docker Hub or GitHub Container Registry).
  2. Deploy and run those images on a cloud provider.

πŸ› οΈ Step 1: Push Images to a Container Registry

You need to host your Docker images online so your deployment server can download them.

1. Log in to Docker Hub

If you don't have an account, sign up at hub.docker.com.

docker login

2. Tag and Push your Images

Tag your local images with your Docker Hub username:

# Tag and Push Backend
docker tag quran-app-backend:latest yourusername/quran-app-backend:1.0.0
docker push yourusername/quran-app-backend:1.0.0

# Tag and Push Frontend
docker tag quran-app-frontend:latest yourusername/quran-app-frontend:1.0.0
docker push yourusername/quran-app-frontend:1.0.0

☁️ Step 2: Choose a Deployment Platform

Here are the three best paths depending on your budget, traffic expectations, and management preferences:

Platform Difficulty Estimated Cost Pros Cons
VPS (DigitalOcean / Hetzner / AWS EC2) ⭐⭐ Medium $4 - $6 / mo Runs your exact docker-compose.yml file; full control; cheapest for 24/7 running apps. You have to manage server updates, firewall, and basic security yourself.
PaaS (Railway.app / Render) ⭐ Easy $5 - $10 / mo Direct GitHub integration; automatic builds; SSL provided out of the box; no server setup. Slightly more expensive than a raw VPS for resources.
Serverless (Google Cloud Run / AWS ECS) ⭐⭐⭐ Harder $0 - $5 / mo Highly scalable; scales down to 0 when idle (very cheap for low-traffic dev projects). Harder to configure network settings, domains, and environment variables.

πŸ“‹ Recommended Deployment Methods

Option A: The Virtual Private Server (VPS) β€” Most Popular & Flexible

If you want to keep running things exactly the same way you do locally using your docker-compose.yml file.

  1. Rent a cheap Linux VM (e.g., DigitalOcean Droplet or Hetzner Cloud with 2GB RAM / 1 vCPU, approx. $5/month).
  2. Install Docker and Docker Compose on the VM:
    sudo apt update && sudo apt install -y docker.io docker-compose-v2
    
  3. Copy your .env and docker-compose.yml files to the server (using scp or git clone).
  4. Run docker compose up -d on the server!
  5. Point your domain name to the VPS IP address.

Option B: Railway / Render β€” Easiest & Fastest

If you want automatic deployments directly from your GitHub repository (CI/CD) without managing virtual servers.

  • Railway.app:

    1. Create a Railway account and link your GitHub repository.
    2. Click New Project β†’ Deploy from GitHub repo.
    3. Railway will detect the Dockerfile inside quran-app-backend and F_Pro and deploy them automatically.
    4. Paste your .env variables into the Railway dashboard under Variables.
    5. Railway will generate public URLs (e.g., https://backend-production.up.railway.app) which you can map to your custom domain.
  • Render.com:

    1. Add a render.yaml blueprint or define a Web Service for each container.
    2. Render will automatically build the images from your Git repository and deploy them.