# 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](https://hub.docker.com/). ```bash docker login ``` ### 2. Tag and Push your Images Tag your local images with your Docker Hub username: ```bash # 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: ```bash 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.