# Docker Compose Quick Reference ## Quick Start ### Full Stack (Server + Agent) ```bash docker-compose up ``` Access dashboard: http://localhost:8080 Login: admin / admin ### Server Only ```bash docker-compose up server ``` ### Agent Only ```bash SERVER=your-server:8080 docker-compose up agent ``` ## Common Commands ```bash # Start services in background docker-compose up -d # Stop all services docker-compose down # View logs docker-compose logs -f # View logs for specific service docker-compose logs -f server docker-compose logs -f agent # Restart services docker-compose restart # Remove volumes/data docker-compose down -v # Rebuild images docker-compose build --no-cache ``` ## Configuration ### Change Server Credentials Edit `docker-compose.yml`: ```yaml environment: USERNAME: "myuser" PASSWORD: "mysecurepassword" ``` ### Change Agent Reporting Interval ```yaml environment: INTERVAL: "30s" # Report every 30 seconds instead of 15 ``` ### Set Custom Agent ID ```yaml environment: AGENT_ID: "my-machine" ``` ### Run Multiple Agents ```bash # Terminal 1: Start server docker-compose up server # Terminal 2: Run agent 1 docker-compose run --name agent1 -e AGENT_ID=machine1 agent # Terminal 3: Run agent 2 docker-compose run --name agent2 -e AGENT_ID=machine2 agent ``` ## Docker Commands ### View Running Containers ```bash docker-compose ps ``` ### Execute Commands in Container ```bash # Connect to server docker-compose exec server sh # View server config docker-compose exec server ps aux ``` ### View Resource Usage ```bash docker stats ``` ## Troubleshooting ### Agent can't connect to server ```bash # Check if server is running and healthy docker-compose ps # Check server logs docker-compose logs server # Check if containers are on same network docker network inspect nerd-monitor ``` ### Clear Everything and Start Fresh ```bash docker-compose down -v docker-compose build --no-cache docker-compose up ``` ### Port Already in Use If port 8080 is already in use, edit `docker-compose.yml`: ```yaml ports: - "8090:8080" # Maps host port 8090 to container port 8080 ``` ## Environment Variables Reference ### Server | Variable | Default | Description | |----------|---------|-------------| | ADDR | 0.0.0.0 | Bind address | | PORT | 8080 | Server port | | USERNAME | admin | Admin username | | PASSWORD | admin | Admin password | ### Agent | Variable | Default | Description | | SERVER | server:8080 | Server address | | INTERVAL | 15s | Reporting interval | | AGENT_ID | (auto) | Agent identifier | ## Production Tips 1. **Change credentials**: Update USERNAME and PASSWORD in docker-compose.yml 2. **Use external volumes**: Add volume mounts for data persistence 3. **Set resource limits**: Uncomment resource limits in docker-compose.yml 4. **Enable restart policies**: Already set to `unless-stopped` 5. **Use environment files**: Create `.env` file for sensitive data: ```bash USERNAME=myuser PASSWORD=mysecurepass ``` Then in docker-compose.yml: `env_file: .env`