This guide explains how to build and publish your Search Algorithm Visualizer Docker image to Docker Hub, making it accessible to anyone.
Docker Hub is a cloud-based registry service for storing and sharing Docker images. Think of it as "GitHub for Docker images."
- Docker installed locally
- Docker Hub account (free at https://hub.docker.com)
- Go to https://hub.docker.com
- Sign up for a free account
- Verify your email
- Note your Docker Hub username (you'll need it)
# Login from terminal
docker login
# Enter your Docker Hub username and password
# You should see: "Login Succeeded"Docker Hub images use the format: username/repository:tag
# Replace YOUR_USERNAME with your Docker Hub username
docker build -t YOUR_USERNAME/search-algorithm-visualizer:latest .
# Example:
# docker build -t johnsmith/search-algorithm-visualizer:latest .Tag conventions:
latest- Most recent stable versionv1.0- Specific version numberdev- Development version
You can create multiple tags:
# Build with version tag
docker build -t YOUR_USERNAME/search-algorithm-visualizer:v1.0 .
docker build -t YOUR_USERNAME/search-algorithm-visualizer:latest .# Push the image
docker push YOUR_USERNAME/search-algorithm-visualizer:latest
# If you created multiple tags, push them all
docker push YOUR_USERNAME/search-algorithm-visualizer:v1.0This will upload your image to Docker Hub. The first push may take 2-5 minutes depending on your internet speed.
- Go to https://hub.docker.com
- Login to your account
- You should see your repository:
YOUR_USERNAME/search-algorithm-visualizer - Click on it to see details, tags, and pull commands
Now anyone can run your app with a single command:
# Pull and run your image
docker run -d -p 80:80 YOUR_USERNAME/search-algorithm-visualizer:latest
# Or with docker-compose, update docker-compose.yml:
services:
web:
image: YOUR_USERNAME/search-algorithm-visualizer:latest
ports:
- "80:80"
restart: unless-stopped- Anyone can pull your image
- Good for open-source projects
- Unlimited public repositories
- Only you (and authorized users) can pull
- Free tier: 1 private repository
- Requires authentication to pull
To change visibility:
- Go to your repository on Docker Hub
- Click Settings
- Change visibility to Public or Private
You can set up automatic builds when you push to GitHub.
-
Link GitHub Account
- Docker Hub → Account Settings → Linked Accounts
- Connect GitHub
-
Create Automated Build
- Repository → Builds → Configure Automated Builds
- Select your GitHub repository
- Set build rules:
- Source:
mainbranch - Docker Tag:
latest - Dockerfile location:
/Dockerfile
- Source:
-
Trigger Rules
- Builds automatically when you push to
main - Can set up multiple rules for different branches/tags
- Builds automatically when you push to
-
Build Configuration
# Example build rules Source Type: Branch Source: main Docker Tag: latest Dockerfile location: /Dockerfile Build Context: /
Now every git push triggers a Docker Hub build automatically!
When you make changes to your app:
# Pull latest code
git pull origin main
# Rebuild with new changes
docker build -t YOUR_USERNAME/search-algorithm-visualizer:latest .
# Push updated image
docker push YOUR_USERNAME/search-algorithm-visualizer:latest
# Optional: Tag with version number
docker build -t YOUR_USERNAME/search-algorithm-visualizer:v1.1 .
docker push YOUR_USERNAME/search-algorithm-visualizer:v1.1# Major.Minor.Patch
docker build -t YOUR_USERNAME/search-algorithm-visualizer:1.0.0 .
docker build -t YOUR_USERNAME/search-algorithm-visualizer:1.0 .
docker build -t YOUR_USERNAME/search-algorithm-visualizer:latest .Create a README.md in your repo root with:
- What the app does
- How to run it
- Environment variables
- Example commands
Docker Hub automatically displays this as your repository description.
# Good tags
:latest # Always points to newest stable
:v1.0.0 # Specific version
:1.0 # Minor version
:stable # Production-ready
:dev # Development version
# Avoid
:test # Too vague
:working # Not descriptive- Use multi-stage builds (you already have this!)
- Use Alpine base images (you already have this!)
- Don't include unnecessary files (.dockerignore)
Your current setup already follows these best practices!
# 1. Make changes to your code
git add .
git commit -m "Add new feature"
git push origin main
# 2. Build new Docker image
docker build -t YOUR_USERNAME/search-algorithm-visualizer:v1.1 .
docker build -t YOUR_USERNAME/search-algorithm-visualizer:latest .
# 3. Test locally (optional)
docker run -d -p 8080:80 YOUR_USERNAME/search-algorithm-visualizer:latest
# Open http://localhost:8080 to verify
# 4. Push to Docker Hub
docker push YOUR_USERNAME/search-algorithm-visualizer:v1.1
docker push YOUR_USERNAME/search-algorithm-visualizer:latest
# 5. Update deployment (if running on server)
ssh user@your-server
docker pull YOUR_USERNAME/search-algorithm-visualizer:latest
docker-compose down
docker-compose up -dOnce published, share these commands with others:
# Quick start
docker run -d -p 80:80 YOUR_USERNAME/search-algorithm-visualizer:latest
# With docker-compose
curl -O https://raw.githubusercontent.com/YOUR_USERNAME/Search-Algorithm-Visualizer/main/docker-compose.yml
# Edit docker-compose.yml to use your image
docker-compose up -dYou can combine Docker Hub with DigitalOcean deployment:
# On DigitalOcean Droplet
docker pull YOUR_USERNAME/search-algorithm-visualizer:latest
docker run -d -p 80:80 --name search-viz \
--restart unless-stopped \
YOUR_USERNAME/search-algorithm-visualizer:latestOr update docker-compose.yml:
version: '3.8'
services:
web:
image: YOUR_USERNAME/search-algorithm-visualizer:latest
ports:
- "80:80"
restart: unless-stoppedThen deploy:
docker-compose pull
docker-compose up -d# Logout and login again
docker logout
docker login
# Use access token instead of password (more secure)
# Generate token at: https://hub.docker.com/settings/security# Make sure you're logged in
docker login
# Verify image name matches your username
docker images | grep search-algorithm
# Image name must be: YOUR_USERNAME/repository:tag# Check Docker is running
docker ps
# Check Dockerfile syntax
docker build -t test .
# View detailed logs
docker build --no-cache -t YOUR_USERNAME/search-algorithm-visualizer:latest .# Check image size
docker images | grep search-algorithm
# Your multi-stage build should produce ~50-100MB image
# If larger, check .dockerignore is workingDocker Hub is FREE for:
- Unlimited public repositories
- 1 private repository
- Unlimited pulls from public repos
Paid plans start at $5/month:
- Unlimited private repositories
- Automated builds
- Parallel builds
- Vulnerability scanning
For this project, the free tier is perfect.
- Create Docker Hub account
- Build and push your image
- Test pulling and running it
- Set up automated builds (optional)
- Add to your portfolio/resume
Your image will be publicly accessible and runnable with just one command!
- Docker Hub: https://hub.docker.com
- Docker Hub Docs: https://docs.docker.com/docker-hub/
- Automated Builds: https://docs.docker.com/docker-hub/builds/
- Best Practices: https://docs.docker.com/develop/dev-best-practices/