Skillversitas

Docker Flask

How to run a Flask application in Docker.

Flask Dockerfile

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["flask", "run", "--host=0.0.0.0"]

docker-compose.yml

version: '3.8'

services:
  api:
    build: .
    ports:
      - "5000:5000"
    environment:
      - FLASK_APP=app.py
      - FLASK_ENV=development
      - DATABASE_URL=postgresql://user:pass@db:5432/myapp
    volumes:
      - .:/app
    networks:
      - app-net

  database:
    image: postgres:15
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
    volumes:
      - postgres-data:/var/lib/postgresql/data
    networks:
      - app-net

networks:
  app-net:

volumes:
  postgres-data:

Use Case: Flask Application

# Run Flask
docker-compose up -d

# Install dependencies
docker-compose exec api pip install -r requirements.txt

# Run migrations
docker-compose exec api flask db upgrade

Everyday Use Case

Case: A developer needs to run Flask.

# Build
docker-compose build

# Run
docker-compose up -d

# Flask commands
docker-compose exec api flask db upgrade
docker-compose exec api flask shell

Best Practices

  1. Use slim: For a smaller image
  2. Non-root user: For security
  3. Health check: For monitoring
  4. Environment variables: For configuration

Conclusion

Flask in Docker is easy to set up. Use docker-compose to manage Flask and the database.