Skip to content

Latest commit

 

History

History
167 lines (131 loc) · 3.15 KB

File metadata and controls

167 lines (131 loc) · 3.15 KB

Docker Setup Guide

Prerequisites

  • Docker Desktop installed (Download)
  • Docker Compose (included with Docker Desktop)

Quick Start

Build and Run with Docker Compose

  1. Navigate to project root:
cd d:\sign-language-translator
  1. Build containers:
docker-compose build
  1. Start services:
docker-compose up -d
  1. Access the application:
  1. Stop services:
docker-compose down

Individual Docker Commands

Backend (Python/Flask)

Build backend image:

docker build -t sign-lang-backend ./backend

Run backend container:

docker run -p 5000:5000 sign-lang-backend

Frontend (React)

Build frontend image:

docker build -t sign-lang-frontend ./frontend

Run frontend container:

docker run -p 3000:3000 sign-lang-frontend

Docker Compose Services

Backend Service

  • Image: Built from ./backend/Dockerfile
  • Port: 5000
  • Environment: Production mode
  • Restart Policy: Unless stopped

Frontend Service

  • Image: Built from ./frontend/Dockerfile
  • Port: 3000
  • Environment: Production mode with API URL pointing to backend
  • Dependencies: Waits for backend service
  • Restart Policy: Unless stopped

Environment Variables

Backend (.env)

FLASK_ENV=production
DEBUG=False

Frontend (.env)

REACT_APP_API_URL=http://localhost:5000
NODE_ENV=production

Useful Docker Commands

View running containers:

docker-compose ps

View logs:

docker-compose logs backend
docker-compose logs frontend
docker-compose logs -f  # Follow logs

Access container shell:

docker-compose exec backend bash
docker-compose exec frontend sh

Remove all containers and images:

docker-compose down --rmi all

Rebuild specific service:

docker-compose up -d --build backend

Troubleshooting

Port already in use

If port 3000 or 5000 is already in use, modify docker-compose.yml:

ports:
  - "3001:3000"  # Map to different port

Container won't start

Check logs:

docker-compose logs backend
docker-compose logs frontend

Clear Docker cache

docker system prune -a

Development Mode

For development with hot reload, use volumes in docker-compose.yml (already configured in backend service).

Production Deployment

For production, consider:

  1. Using environment-specific docker-compose files
  2. Adding health checks
  3. Using secrets management
  4. Setting up CI/CD pipelines
  5. Using container registries

File Structure

project/
├── docker-compose.yml       # Orchestration config
├── .env.docker              # Docker environment variables
├── backend/
│   ├── Dockerfile           # Python backend image
│   ├── .dockerignore        # Files to exclude
│   └── ...
└── frontend/
    ├── Dockerfile           # React frontend image
    ├── .dockerignore        # Files to exclude
    └── ...