| name | docker-stop-dev |
| version | 1.0.0 |
| description | Stops and removes the Charon development Docker Compose environment and containers |
| author | Charon Project |
| license | MIT |
| tags | docker, development, compose, cleanup |
| compatibility | [object Object] |
| requirements | [object Object], [object Object] |
| environment_variables | |
| parameters | |
| outputs | [object Object] |
| metadata | [object Object] |
Docker: Stop Development Environment
Overview
Stops and removes all containers defined in the Charon development Docker Compose environment. This gracefully shuts down services, removes containers, and cleans up the default network while preserving volumes and data.
Prerequisites
- Docker Engine installed and running
- Docker Compose V2 installed
- Development environment previously started
.docker/compose/docker-compose.dev.ymlfile in repository
Usage
Basic Usage
.github/skills/docker-stop-dev-scripts/run.sh
Via Skill Runner
.github/skills/scripts/skill-runner.sh docker-stop-dev
Via VS Code Task
Use the task: Docker: Stop Dev Environment
Parameters
This skill accepts no parameters.
Environment Variables
This skill requires no environment variables.
Outputs
- Success Exit Code: 0 - All services stopped successfully
- Error Exit Codes: Non-zero - Service shutdown failed
- Console Output: Docker Compose shutdown status
Output Example
[+] Running 5/5
✔ Container charon-dev-caddy-1 Removed
✔ Container charon-dev-app-1 Removed
✔ Container charon-dev-crowdsec-1 Removed
✔ Container charon-dev-db-1 Removed
✔ Network charon-dev_default Removed
What Gets Stopped
Services defined in .docker/compose/docker-compose.dev.yml:
- Application Containers: Charon main app
- Database Containers: SQLite/PostgreSQL services
- Security Services: CrowdSec bouncer
- Reverse Proxy: Caddy server
- Network: Default Docker Compose network
What Gets Preserved
The down command preserves:
- Volumes: Database data persists
- Images: Docker images remain cached
- Configs: Configuration files unchanged
To remove volumes, use docker compose -f .docker/compose/docker-compose.dev.yml down -v
Shutdown Order
Docker Compose stops services in reverse dependency order:
- Reverse proxy stops first
- Application services stop next
- Security services stop
- Database services stop last
Examples
Example 1: Stop Development Environment
# Stop all development services
.github/skills/docker-stop-dev-scripts/run.sh
# Verify services are stopped
docker compose -f .docker/compose/docker-compose.dev.yml ps
Example 2: Stop and Remove Volumes
# Stop services and remove data volumes
docker compose -f .docker/compose/docker-compose.dev.yml down -v
Example 3: Stop and Verify Cleanup
# Stop development environment
.github/skills/docker-stop-dev-scripts/run.sh
# Verify no containers running
docker ps --filter "name=charon-dev"
# Verify network removed
docker network ls | grep charon-dev
Graceful Shutdown
The down command:
- Sends
SIGTERMto each container - Waits for graceful shutdown (default: 10 seconds)
- Sends
SIGKILLif timeout exceeded - Removes stopped containers
- Removes default network
When to Use This Skill
Use this skill when:
- Switching between development and production modes
- Freeing system resources (CPU, memory)
- Preparing for system shutdown/restart
- Resetting environment for troubleshooting
- Applying Docker Compose configuration changes
- Before database recovery operations
Error Handling
Common issues and solutions:
Container Already Stopped
Warning: Container already stopped
No action needed - idempotent operation
Volume in Use
Error: volume is in use
Solution: Check for other containers using the volume
Permission Denied
Error: permission denied
Solution: Add user to docker group or use sudo
Post-Shutdown Verification
After stopping, verify:
No Running Containers:
docker ps --filter "name=charon-dev"Network Removed:
docker network ls | grep charon-devVolumes Still Exist (if data preservation intended):
docker volume ls | grep charon
Related Skills
- docker-start-dev - Start development environment
- docker-prune - Clean up Docker resources
- utility-db-recovery - Database recovery
Notes
- Idempotent: Safe to run multiple times (no error if already stopped)
- Data Preservation: Volumes are NOT removed by default
- Fast Execution: Typically completes in seconds
- No Network Required: Local operation only
- Not CI/CD Safe: Intended for local development only
- Graceful Shutdown: Allows containers to clean up resources
Complete Cleanup
For complete environment reset:
# Stop and remove containers, networks
.github/skills/docker-stop-dev-scripts/run.sh
# Remove volumes (WARNING: deletes data)
docker volume rm $(docker volume ls -q --filter "name=charon")
# Remove images (optional)
docker rmi $(docker images -q "*charon*")
# Clean up dangling resources
.github/skills/docker-prune-scripts/run.sh
Troubleshooting
Container Won't Stop
- Check container logs:
docker compose logs app - Force removal:
docker compose kill - Manual cleanup:
docker rm -f container_name
Volume Still in Use
- List processes:
docker ps -a - Check volume usage:
docker volume inspect volume_name - Force volume removal:
docker volume rm -f volume_name
Network Can't Be Removed
- Check connected containers:
docker network inspect network_name - Disconnect containers:
docker network disconnect network_name container_name - Retry removal:
docker network rm network_name
Last Updated: 2025-12-20
Maintained by: Charon Project
Compose File: .docker/compose/docker-compose.dev.yml