Skip to content
Drupal Example Site for Kubernetes
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config/sync Fixes #18: Add personal Fathom Analytics integration. Mar 11, 2019
docs Fixes #16: Put Home and About page images into theme, and add Drush L… Mar 8, 2019
drush Initial commit: Add Composer template for Drupal projects. Feb 9, 2019
scripts/composer Initial commit: Add Composer template for Drupal projects. Feb 9, 2019
tests Fixes #11: Travis CI build is failing after #10. Feb 20, 2019
web Update Provision the Raspberry Pis page. Mar 12, 2019
.dockerignore Fixes #10: Add production settings.php for use with Kubernetes. Feb 17, 2019
.editorconfig
.env.example Initial commit: Add Composer template for Drupal projects. Feb 9, 2019
.gitattributes
.gitignore
.travis.yml
Dockerfile
LICENSE Initial commit: Add Composer template for Drupal projects. Feb 9, 2019
README.md
composer.json Set a specific version of Admin Toolbar in composer.json. Feb 25, 2019
composer.lock Fixes #12: Upgrade Drupal core to 8.6.10. Feb 25, 2019
docker-compose.yml Fixes #6: Add fun 404 page. Mar 4, 2019
load.environment.php
phpunit.xml.dist
pidramble.settings.php

README.md

Drupal Example Site for Kubernetes

Build Status

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.

Documentation

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.

License

MIT license.

Author Information

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

You can’t perform that action at this time.