2. Using Docker to boost
your development
experience with Drupal
Part 1
3. High level explanation of Docker
● Wraps all the pieces of your application into a
standardized package
● Allows you to run your application virtually in any host
● Makes it very easy to share your application with others
8. What makes Linux so special?
● Container-based virtualization (Operating-system-level
virtualization) support by the kernel
● Considered mainstream operating system in the
technology world
9. Why is container-based
virtualization important?
● Efficiency - the amount of resources (CPU, RAM, disk
space etc.) you have available on your system can be
directly translated to the complexity of projects you can
develop on a single machine
● Speed - the faster you can start and rebuild your
application, the faster you can get the feedback and
solve problems
10. What is a Docker image?
● A read-only template that contains a collection of files
that your application needs in order to run
● Can be easily shared via centralized registries or
exported to a file
11. Ways to build a Docker image
● Manually - easy to perform, in practice hard to manage
● Automatically through a Dockerfile - prefered way to
build an image
12. What is a Docker container
● Isolated virtual environment for your application
● Feels like a lightweight virtual machine
● More efficient by sharing host’s operating system kernel
with other containers, but still gives you virtual machine
like capabilities
● Launched from a Docker image
● Fine control over resource allocation
● Per container monitoring
● Startup time is measurable in seconds
14. Dockerfile basics
● A file that contains a series of instructions on how to
build an image
● Very easy to get started with if you already know how to
use command line interface
15. Writing non-interactive commands
apt-get install apache2
Requires user interaction, image build process will fail if
used in a Dockerfile
apt-get install -y apache2
Doesn’t require user interaction, command will install
Apache without asking confirmation, OK to use in a
Dockerfile
18. Using Docker to boost
your development
experience with Drupal
Part 2
19. The Dark Ages
● Development environment not scalable due to using
inefficient tools and workflows
● Fixing a simple bug requires higher level of skill
● Front-end developers directly affected by issues that
shouldn’t belong to their domain
● Development cost higher than it should be
22. Container + Drush = Crush
● Version agnostic wrapper around Drush that allows a
developer to use Drush seamlessly with containers
● Written in Bash, in the future should be ported to a
language that has a better support in Windows
● Supports Drupal 6, 7 and 8
25. virtual + host = vhost
● The front page of your
development
environment
● Lists all your running
containers on a single
web page
● Access containers easily
through DNS
26. Drupal Compose
● Generates general purpose docker-
compose.yml file automatically for your
Drupal 6, 7 and 8 projects
● Developer can start working on a new
project immediately
27. On-premises Docker registry
● Stores our project specific Docker images that shouldn't
be available to public
● Saves lots of time, developers don't have to build
project images on their machine if they just want to
consume them
29. Conclusion
● Docker helped us to make our development
environments and people working together more
efficient
● Having a system in place that doesn't require any
knowledge of setting up your project, no matter what is
your skill level you can still fix bugs or develop new
features to any existing project
● More complex projects are easier to work with and
maintain