How Containerization Saved My Sanity (and My Code!) 🐳🚀

Aleks Aleksandrov
3 min readJan 26, 2024

Containerizing Your Code: A Beginner’s Guide to Easier Deployment 🚀🐳

The Tale of Dependency Despair

Picture this: you’ve developed an awesome Flask web app. It’s sleek, functional, and you’re beaming with pride. Now, you want to share it with your team. But there’s a twist — your teammate is on macOS, and your app was born and bred in a different environment. The result? Dependency chaos and a stream of errors. It’s like trying to decipher an alien language. 👽

The Hero We Needed: Containerization!

Then it hit me: containerization. It’s like packing your app for a journey, ensuring it has everything it needs for a smooth trip, no matter the destination.

What is Containerization?

Containerization involves encapsulating an application and its environment (dependencies, libraries, etc.) into a container. It guarantees that the app will work in any system that can run the container. Docker is the Gandalf of this story, guiding our apps through the perilous lands of different operating systems.

Your First Containerization Adventure

Let’s get your hands dirty with some real action. We’ll containerize that Flask web app and make it run anywhere, like a charm.

Step 1: Install Docker

First, download and install Docker from Docker’s official website. It’s available for Windows, macOS, and Linux.

Step 2: Create a Dockerfile

Navigate to your project directory and create a file named Dockerfile (no extension). This file is the recipe for your container. Here's a simple example for a Flask app:

# Use an official Python runtime as a parent image
FROM python:3.8-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.json
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]

Step 3: Build Your Docker Image

In your project directory, build the Docker image with:

docker build -t my-flask-app .

This command creates an image named my-flask-app from your Dockerfile.

Step 4: Run Your Container

Time to bring your app to life:

docker run -p 4000:80 my-flask-app

This runs your app in a container, mapping your machine’s port 4000 to the container’s port 80.

Step 5: Sharing is Caring

Push your image to Docker Hub:

  1. Create a free account on Docker Hub.
  2. Log in via the command line:
docker login
  1. Tag your image:
docker tag my-flask-app username/my-flask-app
  1. Push it:
docker push username/my-flask-app

Now, your teammate can pull and run your app with ease, regardless of their OS.

Step 6: Pull and Run

Your teammate simply needs to:

docker pull username/my-flask-app
docker run -p 4000:80 username/my-flask-app

And voilà! Your app is up and running on their machine.

Why You Should Embrace Containerization

  • Consistency: Your app runs the same everywhere.
  • Ease of Use: Once set up, running the app is a piece of cake.
  • Isolation: Your app lives in its own environment, safe from conflicts.
  • Efficiency: Containers are lighter and faster than full VMs.

Wrapping Up

Containerization is like a superpower for developers. It simplifies sharing, deployment, and testing. Plus, it’s a great skill to add to your toolbox. So, dive in, experiment, and watch your apps soar across diverse environments!

Happy coding, fellow adventurers! 👨‍💻🌟👩‍💻

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Aleks Aleksandrov
Aleks Aleksandrov

Written by Aleks Aleksandrov

Junior SysOps Engineer. Passionate about Automation & Monitoring.

No responses yet

Write a response