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
- Use slim: For a smaller image
- Non-root user: For security
- Health check: For monitoring
- Environment variables: For configuration
Conclusion
Flask in Docker is easy to set up. Use docker-compose to manage Flask and the database.