1. Planning Your Dockerfile
Before writing any code, outline the manual steps you’d perform to deploy your Flask application:- Select a base image (e.g., Ubuntu or
python:3-slim). - Update and install OS packages (
apt-get update && apt-get install). - Install Python dependencies (
pip install). - Copy application source code into the image.
- Configure environment variables and expose required ports.
- Define the container’s startup command.

Using an official Python base image (for example,
python:3.9-slim) can reduce image size and simplify dependency installation.2. Writing the Dockerfile
Create a file namedDockerfile at your project root and add the following contents:
3. Build, Tag, and Push Your Image
-
Build the image locally and add a tag:
-
Push to Docker Hub (replace with your repository):
4. Inspecting Image Layers with docker history
Each Dockerfile instruction creates a new image layer. To view these layers and their sizes, run:
If you frequently change application code but not OS dependencies, structure your Dockerfile so that
COPY . . appears after installing system and Python packages. This maximizes cache reuse and speeds up rebuilds.5. Leveraging Build Cache for Faster Iteration
Docker caches successful build steps. On subsequent builds:- Steps unchanged since the last build use cached layers.
- Only modified steps (and those that follow) are re-executed.