diff --git a/DOCKER_COMPOSE.md b/DOCKER_COMPOSE.md new file mode 100644 index 0000000..53ab96f --- /dev/null +++ b/DOCKER_COMPOSE.md @@ -0,0 +1,158 @@ +# 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`