4.6 KiB
Docker Setup for Swarms (x86_64/amd64)
This repository includes Docker support for running Swarms on x86_64 (amd64) architecture.
Quick Start
Option 1: Using Docker Compose (Recommended)
# Build and run the container
docker-compose up -d
# View logs
docker-compose logs -f swarms
# Stop the container
docker-compose down
Option 2: Using Docker Build
# Build the image
docker build --platform linux/amd64 -t swarms:latest .
# Run the container
docker run --platform linux/amd64 -it swarms:latest bash
# Run with environment variables
docker run --platform linux/amd64 \
-e OPENAI_API_KEY=your_key_here \
-e ANTHROPIC_API_KEY=your_key_here \
-v $(pwd):/app \
swarms:latest
Option 3: Pull from Docker Hub
# Pull the pre-built image
docker pull swarmscorp/swarms:latest
# Note: The pre-built image may need to be updated for amd64 compatibility
# Use the local build method above for guaranteed amd64 support
Available Services
The docker-compose.yml includes two services:
1. swarms (Default Service)
- Runs a basic swarms container
- Includes health checks
- Auto-restarts unless stopped
2. swarms-dev (Development Service)
- Interactive bash shell
- Ideal for development and testing
- Mounted volumes for live code changes
# Run development container
docker-compose up -d swarms-dev
# Attach to the container
docker exec -it swarms-dev-container bash
Architecture
This Docker image is explicitly built for x86_64 (amd64) architecture using:
- Base image:
python:3.11-slim-bullseye - Platform:
linux/amd64 - Multi-stage build for optimized image size
Environment Variables
Configure your Swarms instance by setting environment variables:
# Create a .env file in the root directory
cat > .env << EOF
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...
EOF
Then use with docker-compose:
docker-compose --env-file .env up -d
Volume Mounts
The docker-compose configuration mounts the following directories:
.:/app- Main application code./data:/app/data- Data directory./models:/app/models- Model files
Building for Different Architectures
While this Dockerfile is optimized for amd64, you can build for other architectures:
# Build for multiple architectures (requires buildx)
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t swarms:multiarch .
Health Checks
The container includes a built-in health check that verifies the swarms package can be imported:
# Check container health
docker inspect --format='{{.State.Health.Status}}' swarms-container
Troubleshooting
Issue: Architecture mismatch
If you're getting architecture-related errors, ensure Docker is configured for amd64:
# Check current architecture
docker info | grep Architecture
# Force amd64 platform
docker run --platform linux/amd64 swarms:latest
Issue: Build fails
If the build fails, try cleaning Docker cache:
docker system prune -a
docker-compose build --no-cache
Issue: Import errors
If you encounter import errors, rebuild the image:
docker-compose down
docker-compose build --no-cache
docker-compose up -d
Advanced Usage
Running Custom Scripts
# Run a Python script
docker run --platform linux/amd64 -v $(pwd):/app swarms:latest python your_script.py
# Using docker-compose
docker-compose run swarms python your_script.py
Interactive Python Shell
# Start Python REPL
docker run --platform linux/amd64 -it swarms:latest python
# Or with docker-compose
docker-compose run swarms python
Installing Additional Dependencies
Create a custom Dockerfile extending the base image:
FROM swarms:latest
USER root
RUN pip install additional-package
USER swarms
Production Deployment
For production deployments:
- Use specific version tags instead of
latest - Configure proper logging and monitoring
- Set resource limits in docker-compose.yml
- Use secrets management for API keys
- Enable automatic container restarts
Example production configuration:
services:
swarms:
image: swarms:1.0.0
deploy:
resources:
limits:
cpus: '2.0'
memory: 4G
reservations:
cpus: '1.0'
memory: 2G
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Support
For issues or questions:
- GitHub Issues: https://github.com/kyegomez/swarms/issues
- Documentation: https://docs.swarms.world
License
MIT License - See LICENSE file for details