Modern Local Development with Docksal

Topic
DevOps
Audience
Intermediate
Description

Tired of using the excuse, "Hey, it worked on my machine!" post-deployment?  Well, it's time to do something about it, but what?

Docker has changed the way we do development and helped move away from having local environments that can be tedious to manage for multiple sites and hosts.  Docksal runs on top of Docker and creates development environments faster and more efficiently than trying to maintain your own Dockerfiles 

We're going to learn how containerized local development can simulate your production environment so that you have the same versions of PHP, Apache, MySQL, Solr, and all the other things that your hosting provider has so you're sure that when you deploy, your code isn't going to make your production site explode with WSOD errors that will have you putting out fires until the wee hours of the morning.

In this training, we're going to cover:

Docker Overview

  • Docker Basics
    • A high-level overview of Docker, how Docker works, and the differences between an image, a container, and a volume.
  • Why Containerize?
    • What are the advantages of using containers for development vs local *AMP stacks?
  • Why Use More Than Just Docker?
    • Why should we consider using something more than just Docker to containerize?  What are the advantages to using something like Docksal to wrap up all of our Docker functionality?  In this section we'll go over how using a dev environment like Docksal makes development easier and faster compared to vanilla Docker.

Intro to Docksal

  • What's a Docksal?
    • Where did it come from? Was it handed to us by aliens in hopes that it would change the world one local dev environment at a time? Nope, but we will cover where Docksal came from and what differences there are between Docksal and some of the other containerized dev environments out there.
  • Docksal Stacks
    • Let's take a look at what a stack is and why we have them.
  • Docksal System and Default Services
    • We're going to explore some of the services that come with Docksal and where they're used.
  • Boilerplates and Starterkits
    • It's not just for Drupal! Let's explore a few of the available boilerplate projects that are in the Docksal Github Repo
  • What's in the Container?
    • We're going to explore some of the tools that are included with Docksal straight out of the box. Many should feel very familiar.

Getting Started

  • Installing Docksal
  • Your First "fin up"
    • Let's make sure everything is installed correctly and that you're able to get Docksal running and see the default page.
  • Spinning up a Drupal Site
    • We're going to spin up a basic Drupal 8 site using the Docksal Drupal 8 boilerplate and take a look at some of the things that Docksal needs to run within a Drupal codebase.
  • Keep it Local
    • Not all settings need to make it into your repo.  In fact, it's better if some don't so that you don't accidentally push an API key into a public repo. We're going to find out how to make sure we keep private stuff on our local environment only.
  • Addons, Addons, Addons
    • Using addons to make your life easier.  We'll explore some of the available addons, what they do, and how to install them.

Going Further

  • Customizing Your Environment
    • When a stack only gets you 90% of the way there, you might need just a little more to get you the rest of the way.  We'll explore some options for making customizations and tweaking existing services to do what you need them to do.
  • Creating Your Own Services
    • Customizing just not doing it for you? Let's build a service to help you make sure your environment is exactly what you need it to be.
  • Adding Docksal to an Existing Project
    • We'll cover how to take a current Drupal project and wrap it up in a nice, warm Docksal blanket by pulling a codebase, installing a site, and importing a database.
  • Docksal: It's Not Just for Local Anymore
    • Let's explore some other uses for Docksal that aren't your local machine. Docksal can be used for CI builds and sandbox environments.

Q & A and Troubleshooting

  • Towards the end of the day we'll open up the conversation and see if there are any unanswered questions or issues that are preventing you from using Docksal in your everyday life.
Goals
By the end of this training, attendees will be able to spin up a Docksal environment with either a new or existing site, know how to customize your Docksal environment, create custom commands when needed, and understand the benefits of containerization compared to developing on a *AMP or *EMP environment.

Attendees will also learn what addons, boilerplate installs, and stacks are available out of the box and how to extend them or create new ones.
Requirements

To prepare for this training you will need:

  • A computer capable of running either a native Docker install or a virtual machine to install Docker.  I suggest VirtualBox.
    • Note: I don't have much experience debugging non-Unix/Linux systems, so please check your Windows install of VirtualBox along with Windows Subsystem for Linux and Ubuntu 18.04 before the training begins.
  • A basic understanding of command line tools.
  • Some knowledge of Bash scripting.
  • Some knowledge of general programming concepts.
    • Note: A deep knowledge of Drupal development is not necessary, but knowing general programming concepts will help out a lot.
Training Length
Full Day
Room
Gaige Classroom 202
Timeslot
9:00 - 4:00pm
Trainers
Profile picture for user Dorf
Genuine
Drupal Technical Architect

JD Flynn has had mental illness most of his life, but didn't admit it until his early 30s when he decided it was time to do something about it. After a decade-long career in emergency services as a paramedic, JD made the jump from the ambulance to the text editor. Since then, JD worked up to the title of Drupal Architect out of Chicago. He's active in the local Drupal community by helping to organize MidCamp, the Midwest Drupal Camp held annually in Chicago and is a co-organizer of the Drupal Chicago Meetup Group.

His life was changed by OSMI (Open Sourcing Mental Illness), a 501(c)(3) non-profit focused on opening the conversation on mental illness, which led him to telling his own story to as many people who would listen. As someone with mental illness who is not afraid to talk about it, JD has presented on the topic of Mental Illness in the Tech Community to local user groups, regional conferences, and national level events at locations such as MIT, UC Berkeley, Washington State Convention Center, Guaranteed Rate Field, and DePaul University.

When not speaking or coding, JD plays baritone saxophone in Windiana, a professional level wind ensemble out of Valparaiso, IN, and Michigan City Municipal Band, the oldest municipal band in Indiana that is currently performing its 151st season.