DigitalOceanTutorial2 min read

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.

Server racks and cloud infrastructure

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-stopped on each service so containers survive reboots
  • Use a .env file 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.