Spaces:
Sleeping
Sleeping
| # 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. | |