<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Deploying Your Dumb Ideas with Dokku</title>
    <meta name="description" content="The slides for a talk about deploying by Dave Smith-Hayes">
    <meta name="author" content="Dave Smith-Hayes">

    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="stylesheet" href="dist/reset.css">
    <link rel="stylesheet" href="dist/reveal.css">
    <link rel="stylesheet" href="dist/theme/black.css" id="theme">

    <!-- Theme used for syntax highlighting of 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>
                <h1>Who am I?</h1>
            </section>

            <section>
                <h1>Dave Smith-Hayes</h1>
                <ul>
                    <li class="fragment">Developer</li>
                    <li class="fragment">Father</li>
                    <li class="fragment">JavaScript Enjoyer</li>
                    <li class="fragment">Web Software Deployer</li>
                </ul>
            </section>

            <section>
                <h1>What is deploying?</h1>
            </section>

            <section>
                <p>Releasing software to be used.</p>
            </section>

            <section>
                <h3>How it works for Web</h3>
                <ul>
                    <li class="fragment">Have a DNS record point to an IP</li>
                    <li class="fragment">Have a webserver runnning at that IP</li>
                    <li class="fragment">Have that webserver proxy requests to the application</li>
                <ul>
            </section>

            <section>
                <h1>My history of deploying</h1>
            </section>

            <section>
                <ul>
                    <li class="fragment">cPanel File Manager</li>
                    <li class="fragment">FTP to Shared Hosting</li>
                    <li class="fragment"><code>$ git pull</code></li>
                    <li class="fragment">Jenkins &amp; Ansible build VM Images</li>
                    <li class="fragment">Packer &amp; Terraform build Continers</li>
                </ul>
            </section>

            <section>
                <h2>Doing it Yourself</h2>
                <ul>
                    <li>Do not use AWS, its too expensive</li>
                    <li>Your small project is not worth the cost</li>
                    <li>Use a small VPS from DigitalOcean or Linode</li>
                    <li>Get a public IP address and root access</li>
                </ul>
            </section>

            <section>
                <h3>Blue/Green Deployment</h3>
            </section>

            <!-- Dokku -->

            <section>
                <h2>What Dokku Does</h2>
                <ul>
                    <li>Creates a <code>dokku</code> user on your system</li>
                    <li>Installs all the services for running Dokku
                        <ul>
                            <li>Docker</li>
                            <li>NGiNX</li>
                        </ul>
                    </li>
                </ul>
            </section>

            <section>
                <h3>Create an application.</h3>
                <pre>
$ dokku apps:create chat.freedoom.party
-----> Creating chat.freedoom.party...
-----> Creating new app virtual host file...
                </pre>

            <!-- Deployment Example -->

        </div>
    </div>

    <!-- JavaScript for the Slide Deck to Run -->
    <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>