"Docker for PHP Developers" is a book and video course that will teach you how to use Docker and PHP to create clean, repeatable development environments that are easy to understand.
Learn how Docker can simplify your PHP development setup and make it simple to share your environment with others. You will learn how to set up, manage, and deploy Docker applications with confidence.
* Book-only packages are also available.
It was hard learning how to use Docker because not only did I have to get used to the Docker environment—which has its own set of learning curves and challenges—I had to learn how to work with PHP, web servers, PHP modules, dependencies, and so forth in this new thing called a “container.”
I had to learn the nuances between Docker and a Vagrant virtual machine (which I was using at the time), how they are similar, and how they are different.
Docker presents some significant paradigm changes to how you think about a PHP environment.
PHP has some specific needs, because of the way PHP’s module system works, and how to properly configure PHP modules for different environments. In development, I need a particular configuration, and in production, I need another configuration.
I wanted a way to build a base image that I can use across all my projects.
Besides the runtime, “what are some ‘best practices’ for organizing my infrastructure code inside my project?”
Or in other words, “where do I put all this Docker-specific configuration and code within my project’s version control?”
I struggled for many hours across multiple types of project honing my code, configuration, PHP setup, and Nginx configurations.
Further, I struggled at first to adapt Laravel’s scheduler and queue patterns to Docker, because it’s much different than the traditional way of running everything on one virtual machine. The idea of using crontab in a container feels weird.
You have to break parts of your Laravel application into multiple containers, and figure out how to share the same Docker image between multiple types of containers that need the same Laravel code.
Fast forward to today, the tools around Docker have improved drastically. No longer will you need to dread moving your application to production or another machine.
Your container will be identical in production and development, and you can work on PHP 5.6 projects and PHP 7, without destroying your local machine’s setup.
You can use one Laravel image to run your web app, scheduler jobs, and queues across multiple containers running the same image. And my course can show you how, as we walk through setting up an entire Laravel app with Docker from scratch!
That’s why I’ve been working on my course Docker for PHP Developers since November 2016.
I have spent the time smoothing out the rough edges of adopting Docker with PHP, so you don’t have to. It will save you hours of searching stack overflow, and reading outdated tutorials, and you can learn how to level-up your Docker and DevOps skills in a couple of afternoons.
I’ve distilled three years of learning into an eight-hour course and a 220-page book!
Docker for PHP Developers is the guide I wish I had when I started learning Docker. It's everything I've learned and refined using Docker on dozens of projects over the last three years combined into one course.
Learning Docker doesn't have to be complicated. In fact, I think the goal of Docker should be to simplify your application environment, not increase complexity. I'll show you how to build practical, simple, clean Docker images from scratch without extra 3rd party tools or libraries—just Docker.
Learn how to create environments that take minutes to install instead of hours or days. Think of Docker images with PHP code as a single artifact that is ready to run your application.
Your application deployments will be extremely predictable and reliable. I work with leading frameworks like Laravel and Symfony, so you'll be able to use the PHP frameworks you love with Docker after going through this guide.
1 - Welcome
2 - Install Docker for Mac
3 - Install Docker for Windows
4 - Install Docker for Ubuntu
5 - Docker Machine Intro
6 - Basic Docker Commands
7 - Docker Compose
8 - Apache Setup
9 - MySQL in Docker
10 - Setting Up PHP Modules and Apache Modules
11 - Data Volumes
12 - Installing Composer in Docker
13 - Private Composer Packages
14 - Caching Composer Dependencies
15 - Nginx (Part 1)
16 - Nginx (Part 2)
17 - Caddy HTTP/2 Server
18 - Introduction
19 - Legacy App Setup
20 - Docker Compose and Apache Configuration
21 - Running a Legacy Console
22 - Composer and phpdotenv
23 - Configuring ENV with phpdotenv
24 - Improved Database Configuration
25 - The CMD Setup
26 - Using Confd for Configuration Management
27 - Adding Confd to the CMD Script
28 - Using Consul with Confd for Configuration Management
29 - Docker Registry Setup
30 - Pushing Images to Docker Hub
31 - Automate Builds with Docker Cloud
32 - Automate Builds with GitLab
33 - Automate Builds with GitLab CI Pipelines
34 - Extending Custom Base Images
35 - Simple Docker Machine Deployment
36 - Docker Swarm Overview
These videos are available in the
Complete Video Bundle
1 - Laravel Getting Started
2 - Copying Files and the Apache Vhost
3 - Apache Permissions
4 - Apache Mod_rewrite
5 - Creating a Docker Compose File
6 - Setting up MySQL
7 - Adding a Redis Service
8 - Configuring an App Volume for Instant Code Changes
9 - Docker and XDebug Setup
10 - A Flexible XDebug Configuration
11 - A Custom Start Script for Laravel Projects
12 - Running the Laravel Scheduler and Queue in Docker
13 - Improving the Scheduler
14 - Improving the Queue
15 - Adding a php.ini File
16 - Opcache Setup
17 - Using Nginx with Laravel
18 - Switching the Scheduler and Queue to Supervisor
19 - Copy vs. Add
20 - Automated Builds with GitLab CI - Intro
21 - Automated Builds with GitLab CI - Composer Build
22 - Automated Builds with GitLab CI - Frontend Build
23 - Automated Builds with GitLab CI - Application Docker Build
24 - Automated Builds with GitLab CI - Application Docker Build with Tags
We'll jump right in and install Docker, with installation steps for Mac OS X, Linux, and Windows. Then, you'll run your first container to verify that your setup is working properly.
Learn your way around Docker with hands-on commands. We'll start off with the basics so you can learn how build your first Docker image from scratch and how to run it. We'll then go over customizing a PHP INI file.
Learn how simple it is to build your own LAMP stack with Docker, without any 3rd party tools. You will also learn how to install and configure PHP modules, all while versioning your configuration in your projects.
Learn how to master Xdebug with Docker with a step-by-step guide that shows you how to install Xdebug with a reusable configuration. You'll also learn how to remove Xdebug when you deploy Docker to production environments.
Are you curious how to use PHP Composer with Docker? You will Learn how to install the Composer CLI tool and install your application dependencies while building a Docker image. Learn how to install private composer repositories without leaving a trace of sensitive API keys or SSH credentials. Learn how to cache Composer dependencies for faster image builds.
Running a Webserver in Docker is a little different than on a traditional server. We cover installing Nginx and PHP-FPM and how they communicate in between Docker containers. We also walk through using Caddy Server, an HTTP/2 web server with automatic HTTPS.
Let's face it, we all have that legacy application in our lives. This chapter will help you set up an older version of PHP with Docker and show you how to retrofit configuration in older applications.
Go beyond the basics of running a container with custom commands and learn how to customize your application startup and runtime. Learn how to use Confd with Consul to separate configuration management from infrastructure code.
Learn how to take your Docker images to the cloud and share them with others. We'll cover how to push your Docker images to registries and automatically build them when you push code commits to GitHub and other services.
Take your first steps in deploying Docker to Digital Ocean with Rancher. Deployment is a big topic, and this chapter is a perfect first step for Developers. Learn how to push your image builds to Rancher from the command line with Rancher Compose.
I first met Paul when he was writing his book on testing Lumen APIs. I learnt a lot from that book, and I’ve learnt a lot from his writing on @laravelnews.— Michael Dyrynda (@michaeldyrynda) January 23, 2018
I can confidently say that if you were wanting to learn about Docker as a PHP developer, this is a great place to start! https://t.co/1HbMundpbT
Hey, super nice! @paulredmond's new "Docker for PHP developers" uses Operator for all the code examples, with Operator Italics for the comments, natch. Thanks, Paul! https://t.co/vEdGpKXufk pic.twitter.com/oUqGMcaVzP— Hoefler&Co. (@HoeflerCo) January 16, 2018
📘Just read through the first few chapters of @paulredmond’s book. It’s such a smooth read, and he makes Docker seem a lot more accessible. If you're interested in learning Docker, you should pick it up!https://t.co/hjJQTkPtdU— Chris Gmyr (@cmgmyr) January 25, 2018
I just received this nice testimonial 💖— Paul Redmond 🇺🇸 (@paulredmond) May 9, 2018
"So far I am loving the book, everything is explained clearly, and I've gained a lot of confidence using Docker. – David B."
Holy smokes! Great deal! Paul's book is fantastic, HIGHLY recommend it! https://t.co/e2MU5bUp4t— TJ Miller 🐳🐘 (@SIXLIV3) January 23, 2018
@paulredmond really great book! Totally worth the wait. Feels like having you explain everything beside me. Would recommend for anyone that wants an excellent way of developing locally and deploying with ease! #dockerphp #docker #books— Chris Stadler (@cstadler333) January 24, 2018
I spent so many hours trying to figure this things out by myself and you make it look so easy 👌. This is gold for beginners. Next stop, chapter 6 🔥.— Jose Barbosa (@josesabarbosa) January 26, 2018
Comes with full series of 60+ videos on getting started with Docker (34 videos) and setting up Docker for Laravel (24 videos). Comes with the Docker for PHP Developers eBook, plus the source code of two starter projects. Learn how to organize your projects with Docker and the latest Laravel and Symfony frameworks.
Comes with full series of 60+ videos on getting started with Docker (34 videos) and setting up Docker for Laravel (24 videos). Comes with the source code of two starter projects. Learn how to organize your projects with Docker and the latest Laravel and Symfony frameworks.
Comes with the book, plus the source code of two starter projects. Learn how to organize your projects with Docker and the latest Laravel and Symfony frameworks.
Learn how to use Docker as a full-time development environment for PHP, with a beautiful, handcrafted book that will help you get from zero experience to Docker user quickly.