Run Foldy locally with a single command - no git clone required!
FOLDY_STORAGE_DIRECTORY=$HOME/foldy-data \
docker-compose -f <(curl -s https://raw.githubusercontent.com/JBEI/foldy/main/deployment/local/docker-compose.yml) up -dRequires: Docker
FOLDY_STORAGE_DIRECTORY=$HOME/foldy-data \
FOLDY_GPU_RUNTIME=nvidia \
NVIDIA_VISIBLE_DEVICES=all \
NVIDIA_DRIVER_CAPABILITIES=compute,utility \
docker-compose -f <(curl -s https://raw.githubusercontent.com/JBEI/foldy/main/deployment/local/docker-compose.yml) up -dRequires: Docker + GPU Support
We recommend using WSL and running the Linux commands above.
$env:FOLDY_STORAGE_DIRECTORY="$env:USERPROFILE\foldy-data"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/JBEI/foldy/main/deployment/local/docker-compose.yml" -OutFile temp-compose.yml
docker-compose -f temp-compose.yml up -dRequires: Docker
We recommend using WSL and running the Linux commands above.
$env:FOLDY_STORAGE_DIRECTORY="$env:USERPROFILE\foldy-data"
$env:FOLDY_GPU_RUNTIME="nvidia"
$env:NVIDIA_VISIBLE_DEVICES="all"
$env:NVIDIA_DRIVER_CAPABILITIES="compute,utility"
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/JBEI/foldy/main/deployment/local/docker-compose.yml" -OutFile temp-compose.yml
docker-compose -f temp-compose.yml up -dRequires: Docker + GPU Support
That's it! Foldy will be available at http://localhost:3000
- Docker and Docker Compose installed
- Internet connection for initial setup
To use GPU acceleration, you need:
- NVIDIA GPU with CUDA support
- NVIDIA Container Toolkit installed on your system
Linux (Ubuntu/Debian):
# Add NVIDIA package repository
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# Install and configure
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerWindows:
- Install Docker Desktop for Windows
- Install NVIDIA Driver for your GPU
- Docker Desktop automatically includes GPU support when NVIDIA drivers are present
Verify GPU support:
docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.2.0-base-ubuntu20.04 nvidia-smiFOLDY_STORAGE_DIRECTORY- Path where Foldy will store all persistent data
FOLDY_VERSION=latest- Docker image version to useFOLDY_DOCKERHUB_USER=jbrlbl- DockerHub username for imagesFOLDY_GPU_RUNTIME=nvidia- Enable GPU acceleration (requires NVIDIA Container Toolkit)NVIDIA_VISIBLE_DEVICES=all- Which GPUs to use (when GPU enabled)NVIDIA_DRIVER_CAPABILITIES=compute,utility- NVIDIA driver capabilities (when GPU enabled)
Your FOLDY_STORAGE_DIRECTORY will contain:
foldy-data/
βββ postgres_data/ # PostgreSQL database files
βββ blob_storage/ # Protein structures, results, uploads
βββ boltz_cache/ # Cached Boltz model files
# Stop Foldy
docker-compose down
# View logs
docker-compose logs -f
# Update to latest version
docker-compose pull && docker-compose up -d
# Restart specific service
docker-compose restart backend
# Database shell
docker-compose exec db psql -U user -d postgres
# Backend shell
docker-compose exec backend bash- Check Docker is running:
docker info - Ensure
FOLDY_STORAGE_DIRECTORYexists and is writable - Try full restart:
docker-compose down && docker-compose up -d
- Wait for PostgreSQL to initialize (may take a minute)
- Check logs:
docker-compose logs db - Verify data directory permissions
- Verify GPU support:
docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.2.0-base-ubuntu20.04 nvidia-smi - Check NVIDIA Container Toolkit installation
- Ensure GPU drivers are up to date
# Login to DockerHub (required for pushing images)
docker login
# Verify access to jbrlbl organization
docker search jbrlbl# Clone repository
git clone https://github.com/JBEI/foldy.git
cd foldy
# Ensure you're on the right branch
git checkout main
git pull origin main# Test with development compose first
docker-compose -f deployment/development/docker-compose.yml up -d
# ... verify everything works ...
docker-compose -f deployment/development/docker-compose.yml downcd deployment/local
# Build and push to DockerHub (replace with your version)
./build_and_deploy_containers.sh v2.0.8
# Build with multiple tags (version + latest)
./build_and_deploy_containers.sh v2.0.8 latest
# Or use environment variables for custom settings
DOCKERHUB_USER=myusername BACKEND_URL=https://myfoldy.com \
./build_and_deploy_containers.sh v2.0.8 latest# Test the newly pushed images
FOLDY_STORAGE_DIRECTORY=/tmp/foldy-test FOLDY_VERSION=v2.1.0 \
docker-compose up -d
# Verify services are healthy
docker-compose ps
docker-compose logs
# Clean up test
docker-compose down
rm -rf /tmp/foldy-test# Update any documentation or scripts that reference the version
# Consider updating the default FOLDY_VERSION in docker-compose.yml if neededThe build_and_deploy_containers.sh script accepts these environment variables:
DOCKERHUB_USER- DockerHub username (default: jbrlbl)DOCKERHUB_REPO_PREFIX- Image name prefix (default: foldy)BACKEND_URL- Backend URL for frontend build (default: http://localhost:8080)INSTITUTION- Institution name for frontend (default: "Foldy Local")
The script builds and pushes these images:
jbrlbl/foldy-frontend:VERSIONjbrlbl/foldy-backend:VERSIONjbrlbl/foldy-worker-esm:VERSIONjbrlbl/foldy-worker-boltz:VERSION
Before releasing, verify:
- All services start successfully
- Frontend accessible at http://localhost:3000
- Backend API responds internally
- Database migrations run successfully
- Workers can process jobs (test with sample protein)
- File uploads work correctly
- Data persists after restart
- Use semantic versioning:
v1.2.3 latesttag is automatically updated with each push- Keep
lateststable - use feature branches for experimental builds - Document breaking changes in release notes
# Clean up Docker
docker system prune -a
docker volume prune# Re-login to DockerHub
docker logout
docker login# Check image sizes
docker images | grep foldy
# Optimize Dockerfiles if needed
# Consider multi-stage builds to reduce final image size