What is Docker Compose
Docker Compose is basically Docker’s multi-container manager — like a project coordinator for your containers.
Instead of you running 5 to 10 docker run commands manually for different containers, Compose lets you define everything (services, networks, volumes) in one YAML file (usually docker-compose.yml), and then start them all with one command:
docker-compose up Key Points
One file to rule them all → You describe your whole app’s setup in a docker-compose.yml file.
Multi-container orchestration → Runs several containers together (e.g., your app + database + cache).
Easy to share → The YAML file is portable; anyone can run your stack with docker-compose up.
Built-in networking → Containers can talk to each other by service name.
What is YAML?
YAML (pronounced “yah-mull”) is a human-friendly way to write structured data — think of it as a prettier, less noisy alternative to JSON or XML.
The name stands for "Yet Another Markup Language" or "YAML Ain’t Markup Language" (yes, they made the acronym recursive on purpose — tech folks love that) which emphasizes that YAML is for data, not documents.
Why YAML is popular
Easy to read → No curly braces {} or quotation marks unless needed.
Indentation-based → Uses spaces to show hierarchy (like Python).
Supports comments → You can write notes with #.
Widely used in DevOps → Docker Compose, Kubernetes, GitHub Actions, Ansible, etc., all use YAML
For the purpose of this task, you will need to have the pre-requisites to ensure you can follow along with the task.
PRE-REQUISITES
Make sure:
- Docker is installed and running
- Docker Compose is installed (
docker-compose --version) - to check that docker-compose is installed - You're using a Linux machine or WSL/Ubuntu
TASK 1: Learn to Use docker-compose.yml
🔹 Step 1: Create a Project Directory
mkdir flask-docker-compose cd flask-docker-compose 🔹 Step 2: Create Your Flask App
mkdir app cd app touch app.py requirements.txt app.py
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello from Flask with Docker Compose!" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) 🔹 Step 3: Create a Dockerfile (in flask-docker-compose/ directory)
# Dockerfile FROM python:3.12-slim WORKDIR /app COPY app/ /app/ RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"] 🔹 Step 4: Create docker-compose.yml in the root directory
version: '3' services: web: build: . ports: - "5000:5000" environment: - FLASK_ENV=development 🔹 Step 5: Run the App with Docker Compose
docker-compose up Open your browser and visit: http://localhost:5000
You should see: Hello from Flask with Docker Compose!
TASK 2: Pull a Public Docker Image and Run It Locally
🔹 Step 1: Pull a Pre-Built Image (e.g., Nginx)
docker pull nginx 🔹 Step 2: Run Nginx Container
docker run -d --name mynginx -p 8080:80 nginx Visit: http://localhost:8080
🔹 Step 3: Run as Non-root User (optional)
If you're getting permission errors:
sudo usermod -aG docker $USER reboot 🔹 Step 4: Inspect Container
docker inspect mynginx Look for:
"ExposedPorts""Mounts""State"
🔹 Step 5: View Logs
docker logs mynginx 🔹 Step 6: Stop & Start Container
docker stop mynginx docker start mynginx 🔹 Step 7: Remove Container When Done
docker rm -f mynginx
Top comments (0)