How Do I Deploy Docker on a DigitalOcean Droplet?
Install Docker on Ubuntu, run your first container, and use Docker Compose to orchestrate multi-service apps on DigitalOcean.
Why Docker on a Droplet?
Docker packages your application and its dependencies into portable containers. Instead of installing Node.js, PostgreSQL, and Redis directly on the OS, each service runs in an isolated container with its own filesystem. This makes deployments reproducible and rollbacks trivial.
Step 1 — Install Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Log out and back in so the group change takes effect. Verify:
docker run hello-world
Step 2 — Install Docker Compose
sudo apt install docker-compose-plugin -y
docker compose version
Step 3 — Run Your First Container
Start an Nginx web server:
docker run -d --name web -p 80:80 nginx
Visit your Droplet IP — Nginx's default page appears. Stop and remove it:
docker stop web && docker rm web
Step 4 — Deploy with Docker Compose
Create a docker-compose.yml for a typical web app:
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/myapp
depends_on:
- db
db:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: myapp
volumes:
pgdata:
Start everything:
docker compose up -d
Step 5 — Manage Containers
docker compose ps # list running services
docker compose logs app # view app logs
docker compose pull # pull latest images
docker compose up -d # recreate with new images
Production Tips
- Set
restart: unless-stoppedon each service so containers survive reboots - Use a
.envfile for secrets — never hardcode passwords in compose files - Put Nginx or Traefik in front of your app container for SSL termination
- Enable the DigitalOcean Container Registry for private image storage
Docker on a Droplet gives you a lightweight alternative to Kubernetes for single-server deployments.