parent
01c4a2d288
commit
78a73c0d34
@ -1,225 +0,0 @@
|
|||||||
# Swarms Docker Image
|
|
||||||
|
|
||||||
This repository includes a Docker image for running Swarms, an AI agent framework. The image is automatically built and published to DockerHub on every push to the main branch and on version tags.
|
|
||||||
|
|
||||||
## 🐳 Quick Start
|
|
||||||
|
|
||||||
### Pull and Run
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Pull the latest image
|
|
||||||
docker pull kyegomez/swarms:latest
|
|
||||||
|
|
||||||
# Run a simple test
|
|
||||||
docker run --rm kyegomez/swarms:latest python test_docker.py
|
|
||||||
|
|
||||||
# Run with interactive shell
|
|
||||||
docker run -it --rm kyegomez/swarms:latest bash
|
|
||||||
```
|
|
||||||
|
|
||||||
### Using Specific Versions
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Pull a specific version
|
|
||||||
docker pull kyegomez/swarms:v8.0.4
|
|
||||||
|
|
||||||
# Run with specific version
|
|
||||||
docker run --rm kyegomez/swarms:v8.0.4 python -c "import swarms; print(swarms.__version__)"
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🏗️ Building Locally
|
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
|
|
||||||
- Docker installed on your system
|
|
||||||
- Git to clone the repository
|
|
||||||
|
|
||||||
### Build Steps
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Clone the repository
|
|
||||||
git clone https://github.com/kyegomez/swarms.git
|
|
||||||
cd swarms
|
|
||||||
|
|
||||||
# Build the image
|
|
||||||
docker build -t swarms:latest .
|
|
||||||
|
|
||||||
# Test the image
|
|
||||||
docker run --rm swarms:latest python test_docker.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 Usage Examples
|
|
||||||
|
|
||||||
### Basic Agent Example
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Create a Python script (agent_example.py)
|
|
||||||
cat > agent_example.py << 'EOF'
|
|
||||||
from swarms import Agent
|
|
||||||
|
|
||||||
# Create an agent
|
|
||||||
agent = Agent(
|
|
||||||
agent_name="test_agent",
|
|
||||||
system_prompt="You are a helpful AI assistant."
|
|
||||||
)
|
|
||||||
|
|
||||||
# Run the agent
|
|
||||||
result = agent.run("Hello! How are you today?")
|
|
||||||
print(result)
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Run in Docker
|
|
||||||
docker run --rm -v $(pwd):/app swarms:latest python /app/agent_example.py
|
|
||||||
```
|
|
||||||
|
|
||||||
### Interactive Development
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Run with volume mount for development
|
|
||||||
docker run -it --rm \
|
|
||||||
-v $(pwd):/app \
|
|
||||||
-w /app \
|
|
||||||
swarms:latest bash
|
|
||||||
|
|
||||||
# Inside the container, you can now run Python scripts
|
|
||||||
python your_script.py
|
|
||||||
```
|
|
||||||
|
|
||||||
### Using Environment Variables
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Run with environment variables
|
|
||||||
docker run --rm \
|
|
||||||
-e OPENAI_API_KEY=your_api_key_here \
|
|
||||||
-e ANTHROPIC_API_KEY=your_anthropic_key_here \
|
|
||||||
swarms:latest python your_script.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔧 Configuration
|
|
||||||
|
|
||||||
### Environment Variables
|
|
||||||
|
|
||||||
The Docker image supports the following environment variables:
|
|
||||||
|
|
||||||
- `OPENAI_API_KEY`: Your OpenAI API key
|
|
||||||
- `ANTHROPIC_API_KEY`: Your Anthropic API key
|
|
||||||
- `GOOGLE_API_KEY`: Your Google API key
|
|
||||||
- `PYTHONPATH`: Additional Python path entries
|
|
||||||
- `PYTHONUNBUFFERED`: Set to 1 for unbuffered output
|
|
||||||
|
|
||||||
### Volume Mounts
|
|
||||||
|
|
||||||
Common volume mount patterns:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Mount current directory for development
|
|
||||||
-v $(pwd):/app
|
|
||||||
|
|
||||||
# Mount specific directories
|
|
||||||
-v $(pwd)/data:/app/data
|
|
||||||
-v $(pwd)/models:/app/models
|
|
||||||
|
|
||||||
# Mount configuration files
|
|
||||||
-v $(pwd)/config:/app/config
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🐛 Troubleshooting
|
|
||||||
|
|
||||||
### Common Issues
|
|
||||||
|
|
||||||
1. **Permission Denied**
|
|
||||||
```bash
|
|
||||||
# Fix permission issues
|
|
||||||
docker run --rm -v $(pwd):/app:rw swarms:latest python your_script.py
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Memory Issues**
|
|
||||||
```bash
|
|
||||||
# Increase memory limit
|
|
||||||
docker run --rm --memory=4g swarms:latest python your_script.py
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Network Issues**
|
|
||||||
```bash
|
|
||||||
# Use host network
|
|
||||||
docker run --rm --network=host swarms:latest python your_script.py
|
|
||||||
```
|
|
||||||
|
|
||||||
### Debug Mode
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Run with debug output
|
|
||||||
docker run --rm -e PYTHONUNBUFFERED=1 swarms:latest python -u your_script.py
|
|
||||||
|
|
||||||
# Run with interactive debugging
|
|
||||||
docker run -it --rm swarms:latest python -m pdb your_script.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔄 CI/CD Integration
|
|
||||||
|
|
||||||
The Docker image is automatically built and published via GitHub Actions:
|
|
||||||
|
|
||||||
- **Triggers**: Push to main branch, version tags (v*.*.*)
|
|
||||||
- **Platforms**: linux/amd64, linux/arm64
|
|
||||||
- **Registry**: DockerHub (kyegomez/swarms)
|
|
||||||
|
|
||||||
### GitHub Actions Secrets Required
|
|
||||||
|
|
||||||
- `DOCKERHUB_USERNAME`: Your DockerHub username
|
|
||||||
- `DOCKERHUB_TOKEN`: Your DockerHub access token
|
|
||||||
|
|
||||||
## 📊 Image Details
|
|
||||||
|
|
||||||
### Base Image
|
|
||||||
- Python 3.11-slim-bullseye
|
|
||||||
- Multi-stage build for optimization
|
|
||||||
- UV package manager for faster installations
|
|
||||||
|
|
||||||
### Image Size
|
|
||||||
- Optimized for minimal size
|
|
||||||
- Multi-stage build reduces final image size
|
|
||||||
- Only necessary dependencies included
|
|
||||||
|
|
||||||
### Security
|
|
||||||
- Non-root user execution
|
|
||||||
- Minimal system dependencies
|
|
||||||
- Regular security updates
|
|
||||||
|
|
||||||
## 🤝 Contributing
|
|
||||||
|
|
||||||
To contribute to the Docker setup:
|
|
||||||
|
|
||||||
1. Fork the repository
|
|
||||||
2. Make your changes to the Dockerfile
|
|
||||||
3. Test locally: `docker build -t swarms:test .`
|
|
||||||
4. Submit a pull request
|
|
||||||
|
|
||||||
### Testing Changes
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Build test image
|
|
||||||
docker build -t swarms:test .
|
|
||||||
|
|
||||||
# Run tests
|
|
||||||
docker run --rm swarms:test python test_docker.py
|
|
||||||
|
|
||||||
# Test with your code
|
|
||||||
docker run --rm -v $(pwd):/app swarms:test python your_test_script.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📝 License
|
|
||||||
|
|
||||||
This Docker setup is part of the Swarms project and follows the same MIT license.
|
|
||||||
|
|
||||||
## 🆘 Support
|
|
||||||
|
|
||||||
For issues with the Docker image:
|
|
||||||
|
|
||||||
1. Check the troubleshooting section above
|
|
||||||
2. Review the GitHub Actions logs for build issues
|
|
||||||
3. Open an issue on GitHub with detailed error information
|
|
||||||
4. Include your Docker version and system information
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Note**: This Docker image is automatically updated with each release. For production use, consider pinning to specific version tags for stability.
|
|
Loading…
Reference in new issue