Stack Basics
Docker Stacks let you deploy multi-service applications using a single docker-compose.yml file in Swarm mode.
Requires Docker Swarm to be initialised with
docker swarm init.
Deploy a Stack
docker stack deploy -c docker-compose.yml mystack
List Stacks
docker stack ls
List Services in a Stack
docker stack services mystack
List Tasks (containers) in a Stack
docker stack ps mystack
Remove a Stack
docker stack rm mystack
Example docker-compose.yml for Stack
version: '3.8'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.role == worker]
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql
    deploy:
      placement:
        constraints: [node.role == manager]
volumes:
  db_data:
Deploy This Stack
docker stack deploy -c docker-compose.yml mystack
Stack Tips
- Use deploy:section to define Swarm-specific settings (replicas, placement, restart policies, etc.)
- Avoid build:in production stacks — use pre-built images.
- Ensure all nodes have access to required networks, volumes, or images.
- Stacks do not support all docker compose features — e.g., no depends_onorcondition:directives in Swarm.
Docker stack deployment vs Compose
| Feature | docker compose | docker stack deploy | 
|---|---|---|
| Designed for | Local development | Swarm clusters | 
| Deploys to | Single Docker daemon | Multiple Swarm nodes | 
| Orchestration | No | Yes (replication, updates) | 
| Rolling updates | ❌ | ✅ | 
| Service restart logic | Minimal | Advanced | 
| Networking | Bridge | Overlay | 
Further Reading
Docker Stack Cheat Sheet
| Task | Command | 
|---|---|
| Deploy a stack | docker stack deploy -c docker-compose.yml mystack | 
| List stacks | docker stack ls | 
| List services in a stack | docker stack services mystack | 
| List running containers/tasks | docker stack ps mystack | 
| Remove a stack | docker stack rm mystack |