Production-Ready Containerized Python Web Application
Built with Docker | Optimized with Multi-Stage Builds | Published to Docker Hub
This project demonstrates full lifecycle containerization of a Python Flask web application using Docker.
It includes:
The result is a reproducible, portable, and production-ready containerized application.
Application Code
↓
Dockerfile
↓
Docker Image
↓
Docker Container
↓
Docker Hub Registry
Docker-Essentials/
│
├── app.py
├── requirements.txt
├── Dockerfile
├── Dockerfile.multistage
└── .dockerignore
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Docker!"
@app.route('/health')
def health():
return "OK"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Flask==2.3.3
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]
docker build -t flask-essentials .
docker run -d -p 5000:5000 --name flask-container flask-essentials
# Stage 1: Builder
FROM python:3.9-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN pip install --no-cache-dir -r requirements.txt
# Stage 2: Runtime
FROM python:3.9-slim
WORKDIR /app
COPY --from=builder /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
COPY app.py .
RUN useradd -m appuser
USER appuser
EXPOSE 5000
CMD ["python", "app.py"]
docker build -f Dockerfile.multistage -t flask-essential-multi .
docker images
docker history flask-essentials
docker inspect flask-essentials
docker rmi flask-essentials
docker image prune
docker ps
docker ps -a
docker logs flask-container
docker stop flask-container
docker start flask-container
docker rm flask-container
docker container prune
docker tag flask-essentials nitanshutak/flask-essentials:1.0
docker tag flask-essentials nitanshutak/flask-essentials:latest
docker tag flask-essential-multi nitanshutak/flask-essentials:production
Versioning Strategy:
docker login
docker push nitanshutak/flask-essentials:1.0
docker push nitanshutak/flask-essentials:latest
docker push nitanshutak/flask-essentials:production
docker pull nitanshutak/flask-essentials:latest
docker run -d -p 5000:5000 nitanshutak/flask-essentials:latest
docker build -t flask-essentials .
docker build -f Dockerfile.multistage -t flask-essential-multi .
docker run -d -p 5000:5000 --name flask-container flask-essentials
docker logs flask-container
docker tag flask-essentials nitanshutak/flask-essentials:1.0
docker push nitanshutak/flask-essentials:1.0
docker pull nitanshutak/flask-essentials:latest
docker stop flask-container
docker rm flask-container
This repository represents a complete Docker containerization workflow including development, optimization, versioning, publishing, and deployment.
The application is: