D: 🚀 Introduction to Docker Compose
Docker Compose is a powerful tool for defining and running multi-container Docker applications. With a simple YAML file, you can configure all your services, networks, and volumes, then manage them with easy commands.
🔥 Why Use Docker Compose?
✔ Simplify multi-container setups – No more manual docker run
commands!
✔ Reproducible environments – Share docker-compose.yml
for consistent deployments.
✔ Efficient development – Start/stop all services with a single command.
📜 1. Basic Docker Compose Commands
① docker-compose up
Starts all services defined in docker-compose.yml
.
docker-compose up # Starts in attached mode (logs visible)
docker-compose up -d # Detached mode (runs in background)
② docker-compose down
Stops and removes containers, networks, and volumes.
docker-compose down # Stops containers
docker-compose down -v # Also removes volumes (careful!)
③ docker-compose ps
Lists running containers in the Compose project.
docker-compose ps
# Example Output:
# NAME COMMAND STATUS
# web_app "npm start" Up 2 minutes
# db "docker-entrypoint…" Up 2 minutes
④ docker-compose logs
Displays logs from all services.
docker-compose logs # Shows all logs
docker-compose logs web # Only shows logs for 'web' service
🛠 2. Advanced Docker Compose Commands
⑤ docker-compose build
Rebuilds images defined in docker-compose.yml
.
docker-compose build # Rebuilds all services
docker-compose build web # Rebuilds only the 'web' service
⑥ docker-compose exec
Runs a command inside a running container.
docker-compose exec db psql -U postgres # Runs PostgreSQL CLI
docker-compose exec web bash # Opens a shell in 'web' container
⑦ docker-compose pull
Downloads updated images for services.
docker-compose pull # Updates all images
docker-compose pull redis # Updates only Redis image
⑧ docker-compose restart
Restarts services without rebuilding.
docker-compose restart # Restarts all services
docker-compose restart api # Restarts only 'api' service
🚀 3. Real-World Docker Compose Example
Sample docker-compose.yml
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- redis
redis:
image: "redis:alpine"
volumes:
- redis_data:/data
volumes:
redis_data:
How to Use It?
1️⃣ Start the app:
docker-compose up -d
2️⃣ Check running services:
docker-compose ps
3️⃣ Access logs:
docker-compose logs web
4️⃣ Stop everything:
docker-compose down
🔥 Bonus Tips & Tricks
✅ Override configurations with docker-compose.override.yml
.
✅ Scale services with docker-compose up --scale web=3
.
✅ Use profiles (profiles:
) to conditionally start services.
🎯 Conclusion
Docker Compose makes managing multi-container apps effortless! 🎉
Master these commands to streamline your development workflow.
💡 Need more? Check out the official Docker Compose docs!
Would you like a deep dive into any specific command? Let me know! 🚀