julien-infra-hostinger-docker
Docker management for Hostinger VPS srv759970 - container operations, image optimization, WordPress Docker, troubleshooting. Use for any Docker operation, container issues, or image management.
When & Why to Use This Skill
This Claude skill provides a comprehensive management toolkit for Docker environments on Hostinger VPS. It streamlines container orchestration, automates image optimization, and simplifies WordPress Docker deployments. By integrating status monitoring, lifecycle operations, and advanced troubleshooting runbooks, it ensures high availability and peak performance for cloud-hosted applications.
Use Cases
- Monitoring container health and resource metrics (CPU/Memory) in real-time to prevent server overloads.
- Executing seamless deployments and service updates using Docker Compose with automated build and recreation workflows.
- Managing WordPress instances within Docker, including database operations, WP-CLI commands, and file permission fixes.
- Optimizing server storage through automated cleanup of dangling images, old layers, and unused volumes.
- Rapidly diagnosing and resolving infrastructure issues such as container crashes, network endpoint conflicts, and configuration errors.
| name | julien-infra-hostinger-docker |
|---|---|
| description | Docker management for Hostinger VPS srv759970 - container operations, image optimization, WordPress Docker, troubleshooting. Use for any Docker operation, container issues, or image management. |
| license | Apache-2.0 |
Hostinger Docker Management
Docker infrastructure for srv759970.hstgr.cloud (30+ containers).
Server Info
| Property | Value |
|---|---|
| Host | automation@69.62.108.82 |
| Base path | /opt/ |
| Containers | 30+ (ML apps, APIs, databases) |
1. Status & Monitoring
Quick Status
ssh srv759970 'docker ps --format "table {{.Names}}\t{{.Status}}"'
ssh srv759970 'docker system df'
Container Stats
ssh srv759970 'docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.CPUPerc}}"'
Logs
ssh srv759970 'docker logs container-name --tail 50'
ssh srv759970 'docker logs -f container-name' # Follow
ssh srv759970 'docker logs container-name --tail 100 --timestamps'
2. Container Operations
Start/Stop/Restart
ssh srv759970 'docker restart container-name'
ssh srv759970 'docker stop container-name'
ssh srv759970 'docker start container-name'
Deploy Service
ssh srv759970 << 'EOF'
cd /opt/service-name
docker-compose down
docker-compose up -d
docker-compose logs --tail 20
EOF
Force Recreate (for config changes)
ssh srv759970 'cd /opt/service && docker-compose down && docker-compose up -d --force-recreate'
Execute Command in Container
ssh srv759970 'docker exec -it container-name bash'
ssh srv759970 'docker exec container-name ls /app'
ssh srv759970 'docker exec -u root container-name chown -R www-data:www-data /var/www/html'
3. WordPress Docker
Containers
| Container | Port | Usage |
|---|---|---|
| wordpress-site | 9xxx | WordPress + PHP |
| mysql-site | 3306 | Database |
| wp-cli-site | - | WP-CLI commands |
Common Commands
# Status
ssh srv759970 'docker ps | grep wordpress'
# Logs
ssh srv759970 'docker logs wordpress-site --tail 50'
# Restart
ssh srv759970 'cd /opt/wordpress-site && docker-compose restart'
# WP-CLI
ssh srv759970 'docker exec wp-cli-site wp plugin list'
ssh srv759970 'docker exec wp-cli-site wp user list'
# Fix permissions
ssh srv759970 'docker exec -u root wordpress-site chown -R www-data:www-data /var/www/html'
4. Image Management
List Images
ssh srv759970 'docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"'
Cleanup
# Dangling images (safe)
ssh srv759970 'docker image prune -f'
# Old images (>30 days)
ssh srv759970 'docker image prune -a --filter "until=720h"'
# Unused volumes
ssh srv759970 'docker volume prune -f'
Build & Deploy
ssh srv759970 << 'EOF'
cd /opt/service
docker-compose build --no-cache
docker-compose up -d --force-recreate
docker image prune -f
EOF
5. Troubleshooting
ContainerConfig KeyError
docker-compose down && docker-compose up -d --force-recreate
Network has active endpoints
# Skip down, use only:
docker-compose up -d --force-recreate
Wrong CMD in container
docker-compose build --no-cache
docker-compose up -d
Container keeps restarting
# Check logs
docker logs container-name --tail 100
# Check exit code
docker inspect container-name | grep ExitCode
# Check memory limits
docker stats --no-stream container-name
Permission denied (scp)
Use cat with heredoc instead:
ssh srv759970 "cat > /opt/service/Dockerfile" << 'EOF'
# Dockerfile content here
EOF
6. Optimization
Multi-stage Dockerfile Template
# Stage 1: Build
FROM python:3.11-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Stage 2: Runtime
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY . .
EXPOSE 8000
CMD ["python", "main.py"]
Best Practices
- Order layers: deps before code
- Use multi-stage builds
- Combine RUN commands
- Add .dockerignore
- Use --no-cache-dir for pip
Quick Reference
# Status
ssh srv759970 'docker ps && docker system df'
# Restart service
ssh srv759970 'cd /opt/service && docker-compose restart'
# Logs
ssh srv759970 'docker logs container --tail 50'
# Cleanup
ssh srv759970 'docker image prune -f && docker volume prune -f'
# Full redeploy
ssh srv759970 'cd /opt/service && docker-compose down && docker-compose build --no-cache && docker-compose up -d'