docker compose file added for deployment

This commit is contained in:
2026-01-22 22:34:12 +05:30
parent 9d7109b60f
commit c76d533783
13 changed files with 267 additions and 4 deletions

96
DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,96 @@
# OCR Application Deployment Guide
This guide describes how to deploy the OCR application on a Linux host (e.g., Ubuntu/Debian).
## Architecture
- **Backend**: Containerized (FastAPI, Python 3.9).
- **Database**: Containerized (PostgreSQL 15).
- **Frontend**: Static files (Angular) served by Host Nginx.
- **Reverse Proxy**: Host Nginx proxies requests to Frontend (Static) and Backend (API).
## Prerequisites
- Docker & Docker Compose installed on the host.
- Nginx installed on the host.
- Node.js & NPM (for building Angular).
---
## 1. Full Stack Deployment (Docker)
The app connects to your **existing Postgres container** (`postgres-db`) in the `arbit-app_arbit-network`.
1. **Create the Database**:
Since we are using an existing postgres instance, we must manually create the `ocr_db`.
```bash
# Run this on your host to create the DB inside the existing container
docker exec -it postgres-db psql -U postgres -c "CREATE DATABASE ocr_db;"
```
2. **Navigate to project root**:
```bash
cd /path/to/OCR
```
3. **Verify Environment**:
Ensure `.env.prod` exists and points to `DB_HOST=postgres-db`.
**Also configure your Email credentials** in `.env.prod` if you want the Mailbox feature to work (Gmail requires an App Password).
```bash
cat .env.prod
```
4. **Start App Containers**:
This will start `ocr_backend` and `ocr_frontend`.
```bash
# Build and start in detached mode
docker-compose --env-file .env.prod up -d --build
```
5. **Verify Status**:
```bash
docker-compose ps
```
You should see `ocr_backend` and `ocr_frontend` running.
---
## 2. Nginx Configuration (Host Reverse Proxy)
Since the Frontend is now running in a container on port 8080 (serving `/ocrf/`), we configure the Host Nginx to proxy traffic to it.
1. **Create Config File**:
Copy the provided config to `/etc/nginx/sites-available/ocr`.
```bash
sudo cp deployment/nginx.conf /etc/nginx/sites-available/ocr
```
2. **Enable Site**:
```bash
sudo ln -s /etc/nginx/sites-available/ocr /etc/nginx/sites-enabled/
```
3. **Test & Reload**:
```bash
sudo nginx -t
sudo systemctl reload nginx
```
---
## 3. Verification
- **Url**: `http://app.technobeesolutions.in/ocrf/` (Proxies to Frontend Container)
- **API**: `http://app.technobeesolutions.in/ocrb/` (Proxies to Backend Container)
---
## 4. Troubleshooting
- **Logs**:
```bash
docker-compose logs -f backend
```
- **Database**:
Connect via the existing container:
```bash
docker exec -it postgres-db psql -U postgres -d ocr_db
```