Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Drupal Example Site for Kubernetes


The purpose of this Drupal codebase is to demonstrate a Drupal project and configuration set up for deployment into Kubernetes or an otherwise scalable containerized environment.

The project is used in tandem with the Raspberry Pi Dramble, an open source Kubernetes cluster tailor made for Drupal meant to run on a cluster of Raspberry Pis.


Please read through the project documentation for details about how this project was created, how it's structured for easy development and deployment into production container environments, and how you can create your own Drupal project like it.

Local setup

  1. Build the site's docker image from the Dockerfile:

    docker build -t geerlingguy/drupal-for-kubernetes .
  2. Run the local development environment:

    docker-compose up -d

    (Wait for the environment to come up—you can monitor the logs with docker-compose logs -f).

  3. Once the container is running, install Dependencies and install Drupal. You can either access http://localhost/ and install using the UI, or install via Drush:

    # Install dependencies.
    docker-compose exec drupal composer install
    # Install Drupal.
    docker-compose exec drupal bash -c 'drush site:install minimal --db-url="mysql://drupal:$DRUPAL_DATABASE_PASSWORD@$DRUPAL_DATABASE_HOST/drupal" --site-name="Drupal Example Site for Kubernetes" --existing-config -y'
  4. Visit http://localhost/ in your browser, and login as admin using the password Drush printed in the 'Installation complete' message.

Note: If you have PHP and Composer installed on your host computer, you can run the composer install command there instead of through the Docker container for a bit of a speedup. Also note that if you're using Docker for Mac or Windows, it can take a couple minutes after composer install completes for all the filesystem changes to be present inside the Docker container!

Managing Configuration

After making any configuration changes on the website, you can export the configuration to disk so it can be preserved in the codebase and deployed to the production site:

docker-compose exec drupal bash -c 'drush config:export -y'

For more on the way this project's configuration changes are handled, and the general site development process, see the project documentation.

Exporting Content

After making any content changes on the website, you can export the changes to disk so it is preserved in the codebase and installable on the production site:

docker-compose exec drupal bash -c 'drush dcer --folder=modules/custom/pidramble_default_content/content/ node 1'

For more on the way this project's content changes are handled, see the pidramble_default_content README.

Upgrading Core (and Contrib)

  1. Set up the site like normal, make sure it's installed.
  2. Run docker-compose exec drupal composer update (to update everything).
  3. Run docker-compose exec drupal bash -c 'drush updb -y'
  4. Run docker-compose exec drupal bash -c 'drush config:export -y'
  5. Commit any changes and push them.


MIT license.

Author Information

Created in 2019 by Jeff Geerling, author of Ansible for DevOps and Ansible for Kubernetes.