Deploying

Your Dumb Ideas

With Dokku

Who am I?

Dave Smith-Hayes

  • Father
  • Developer
  • JavaScript Enjoyer

What is deploying?

Releasing software to be used.

How it works for Web

  • Have a DNS record point to an IP
  • Have a webserver runnning at that IP
  • Have that webserver proxy requests to the application

My history of deploying

  • cPanel File Manager
  • FTP to Shared Hosting
  • $ git pull
  • Jenkins & Ansible build VM Images
  • Packer & Terraform build Containers

Deployment Methods

  • In Place
  • Rolling
  • Immutable
  • Green/Blue

Doing it Yourself

What do you need?

  • A domain
  • A server with a public IP address
  • A webserver
  • Patience

Dokku

Self-hosted Platform as a Service (PaaS)

Your very own Heroku*

*I have never used Heroku

What Dokku Does

  • Creates a dokku user on your system
  • Installs all the services for running Dokku
    • Docker
    • NGiNX

How Dokku Works

  • Sets up Application
  • Becomes a Git remote repository
  • Builds and deploys the app behind NGiNX

Builders

  • Heroku Buildpacks
  • Dockerfile
  • Nixpacks

Plugins

  • Let's Encrypt
  • Databases (MySQL, Postgres)

Demo

Anatomy of the Server

  • Linode VPS
  • Debian
  • Nameservers

Anatomy of the Application