185 lines
4.8 KiB
HTML
185 lines
4.8 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
|
|
<title>Deploying Your Dumb Ideas with Dokku</title>
|
|
|
|
<link rel="stylesheet" href="dist/reset.css">
|
|
<link rel="stylesheet" href="dist/reveal.css">
|
|
<link rel="stylesheet" href="dist/theme/black.css">
|
|
|
|
<!-- Theme used for syntax highlighted code -->
|
|
<link rel="stylesheet" href="plugin/highlight/monokai.css">
|
|
</head>
|
|
<body>
|
|
<div class="reveal">
|
|
<div class="slides">
|
|
<!-- Introduction -->
|
|
<section>
|
|
<h1>Deploying</h1>
|
|
<h3 class="fragment">Your Dumb Ideas</h3>
|
|
<h3 class="fragment">with Dokku</h3>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>What is Deploying?</h2>
|
|
|
|
<aside class="notes">This is mostly for web applications and websites</asides>
|
|
</section>
|
|
|
|
<section>
|
|
<div>Publishing an application to be used</div>
|
|
</section>
|
|
|
|
<!-- My history of deploying shit -->
|
|
<section>
|
|
<h2>A Brief History of Deploying</h2>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Shared Web Hosting</h2>
|
|
<div class="fragment">
|
|
<img src="images/cpanel-logo.png" />
|
|
</div>
|
|
|
|
<aside class="notes">cPanel had a file manager you could upload your PHP files to!</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<div>
|
|
<img src="images/cPanel-Interface.jpg" />
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>FTP</h2>
|
|
<div class="fragment">
|
|
<img src="images/filezilla-screenshot.webp" />
|
|
</div>
|
|
|
|
<aside class="notes">Then we evolve. Connect to your cPanel instance with FTP!</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>More Advanced Shared Hosting</h2>
|
|
<div class="fragment">
|
|
<img src="images/WHM_orange_RGB.png" />
|
|
</div>
|
|
|
|
<aside class="notes">Small mention of WHM and managing many installations of cPanel!</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Git</h2>
|
|
<ol>
|
|
<li class="fragment"><code>$ ssh root@domain</code></li>
|
|
<li class="fragment"><code>$ cd /usr/var/www</code></li>
|
|
<li class="fragment"><code>$ git pull</code></li>
|
|
</ol>
|
|
|
|
<aside class="notes">I have never actually used Github professionally, oddly enough.</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Modern Build & Deployment Systems</h2>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>AWS</h2>
|
|
</section>
|
|
|
|
<!-- Talk about Virtual Machines, Containers, K8s,
|
|
Talk about Jenkins, Ansible, GitHub Actions,
|
|
Bitbucket Pipelines, Terraform, Packer -->
|
|
|
|
<section>
|
|
<h2>Deployment as a Service</h2>
|
|
<ul>
|
|
<li>Heroku</li>
|
|
<li>Vercel</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Dokku</h2>
|
|
<h3><em>(finally)</em></h3>
|
|
</section>
|
|
|
|
<section>
|
|
<h2 class="fragment" data-transition="fade-in">But first...</h2>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>VPS</h2>
|
|
<ul>
|
|
<li>Easiest way to get a public IP</li>
|
|
<li>Cheap, modest servers, running Linux (<em>Debian</em>)
|
|
<ul>
|
|
<li>Linode</li>
|
|
<li>DigitalOcean</li>
|
|
</ul>
|
|
</li>
|
|
<li>Root access!</li>
|
|
</ul>
|
|
|
|
<aside class="notes">Virtual Private Servers, super easy for getting off the ground quickly</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Dokku</h2>
|
|
<ul>
|
|
<li class="fragment">Open Source, Self-Hosted, Platform as a Service</li>
|
|
<li class="fragment">Your very own Heroku</li>
|
|
</ul>
|
|
|
|
<aside class="notes">I have never used Heroku</aside>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="fragment" data-transition="fade-in fade-out"><em>I have never used Heroku...</em></div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Set Up</h2>
|
|
<ul>
|
|
<li>Install Dokku on VPS</li>
|
|
<li>Setting up Domains</li>
|
|
<li>Set up Dokku remote in your Git repo</li>
|
|
<li>Have a global <code>Dockerfile</code> in your code</li>
|
|
<li><code>$ git push -u dokku main</code></li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<blockquote>Buildpacks are responsible for transforming deployed code into a slug, which can then be executed on a dyno.</blockquote>
|
|
<div class="fragment" data-transition="fade-in">That feels made up.</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Real Life Example</h2>
|
|
|
|
<aside class="notes">Show deploying the chat application.</aside>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="dist/reveal.js"></script>
|
|
<script src="plugin/notes/notes.js"></script>
|
|
<script src="plugin/markdown/markdown.js"></script>
|
|
<script src="plugin/highlight/highlight.js"></script>
|
|
<script>
|
|
// More info about initialization & config:
|
|
// - https://revealjs.com/initialization/
|
|
// - https://revealjs.com/config/
|
|
Reveal.initialize({
|
|
hash: true,
|
|
|
|
// Learn about plugins: https://revealjs.com/plugins/
|
|
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|