
One of the problems with Dockerizing an existing project is that configuration information tends to proliferate everywhere. Not only do we have settings in docker-compose.yml, but also in our Docker-specific settings file settings.docker.php. If we change a setting in one place we need to copy and paste it everywhere else. This can make things difficult if we suddenly have the need to change a setting.
Fortunately, there's a way to centralize Docker configuration for our project by using an environment file.
In this tutorial, we'll:
- Review what an environment file is and its format.
- List the advantages of moving Docker configuration to an environment file.
- Describe the .env file, and how it provides us further advantages.
The Drupal Entity API makes it easy to define new custom content entity types. And in most cases whenever you want to store custom content in Drupal you should use the Entity API instead of making CRUD queries directly to the database. This ensures your code is more consistent, and allows you to take advantage of all the features of the Entity API like access control, Views module integration, and automatic JSON:API support. As well as making it easier for others to extend your custom content by ensuring all the proper hooks and lifecycle events get invoked when new content items get created, updated, and deleted.
In this tutorial we'll:
- Walk through the process of creating a custom content entity
By the end of this lesson you'll be able to create your own custom content entity contained in a module.
To follow along with our Drupal Views tutorials, set up a Drupal site loaded with our 4 custom views and baseball stats content that will make querying in Views a bit more interesting and meaningful.
By the end of this tutorial, you should choose a solution and follow the instructions for creating a Drupal site loaded with our starting point content and views.
Installation is only one part of setting up a custom Docker image. With few exceptions, we'll want to configure the application to better suit our use case. Docker does not provide a standardized way for applications to be configured. Instead, we rely on the same techniques as we would when configuring the application on a bare-metal server.
In this tutorial, we'll:
- Extract default configuration files from a Docker image
- Give strategies for adding configuration files to the image
- Outline the complexities of using configuration commands in a Dockerfile
Overview of Drupal and the reasons to choose it as a reliable Content Management System (CMS).
Clear Drupal's Cache
FreeKnowing how to clear Drupal's cache is an important skill for any developer. You'll likely find yourself doing it frequently in order to get Drupal to register the changes you make to your code, or other updates you make via the UI. It is also a good first step to trouble shooting problems with your Drupal site: Clear the cache before you do any other debugging to ensure it's not just a bad cache entry.
Drupal 8.1 now provides a user interface (UI) for conducting a Drupal-to-Drupal migration. Since there is no direct upgrade path for Drupal 6 or 7 to 8, you should become familiar with the migrate system in Drupal, as it will allow you to migrate your content from previous versions to Drupal 8.
One of the biggest questions when first learning Docker is "How do we get data into and out of containers?" We can use docker-compose exec
to interact with them on the command line, but that doesn't fulfill our needs as developers. Docker provides several mechanisms to share data with the container, each with specific purposes. Docker Compose lets us leverage each of those easily with just a few lines of YAML.
In this tutorial, we'll:
- Identify the various ways we can get data into containers
- Define volumes
- Describe how to use environment variables in Docker
- Describe how to expose network ports from a container set
We're excited to publish a new set of tutorials on Drupal's Views module. This set of tutorials includes a database starting point and instructions for setting up a local development environment with DDEV so that you can follow along. The database includes an extensive set of baseball stats data so that we could demonstrate the power of Views to filter, sort, display, theme, and build customized lists in blocks, pages, API endpoints, and more.
Making Drupal fast by default implies having caching layers and CSS and JavaScript aggregation utilities enabled out-of-the-box. As a theme developer this can be annoying, because you must clear these various caches in order to preview any changes. In addition, inspecting variables with debugging tools often produces PHP errors. We'll make some recommendations for PHP settings on your local environment that can prevent these errors from happening so often.
By the end of this tutorial, you should be able to:
- Set up your local Drupal site for theme development
- Prepare your local development environment for working on and debugging themes
Overview of data backups and what should be backed up on a site.
12.1. Concept: Cache
FreeOverview of the cache and the site data that can be cached.
So far from PHP for Beginners, Part 1 and PHP For Beginners, Part 2, we have a basic site that uses a JSON file to create a list of pets in our store. Now in PHP for Beginners, Part 3, we're going to dive into the world of databases and PHP. We'll get an overview of working with MySQL databases and how to connect them with a PHP-based site.
Create Offsite Backups with NodeSquirrel
Blog postIn our free Module Monday: Backup and Migrate tutorial we discussed all the benefits and features the module has to offer. In this tutorial I am going to extend on the functionality of the module because something great has happened in the Drupal world. Pantheon, a Drupal hosting provider, has purchased NodeSquirrel an offsite backup solution created by the makers of the Backup and Migrate module. What is so great about this is Pantheon is allowing free backups up to 5gb. This means there are no more excuses not to have an offsite backup of your Drupal database.
Drupal's development has a regular release cycle consisting of major, minor, and patch releases. Drupal releases use semantic versioning for its version numbers. Since we're committed to making sure our tutorials are kept up-to-date with the latest and greatest version of Drupal we figured it would be a good idea if you knew how to keep your Drupal site up-to-date with the latest "point" releases as well.
This tutorial will cover:
- How to determine the type of update
- The standard update procedure
- Update Drupal using Drush
- Update Drupal using Composer
This tutorial won't cover:
- How to perform a major version Drupal upgrade, for example, from Drupal 6 or 7 to the latest version of Drupal. For that, see our guide, Learn to Migrate to Drupal.
Release Day: Writing a Custom Migration
Blog postThis week we're finally ready to dive in and write our first custom migration with the Migrate module. To get things set up, we need to get our source data, and create the content type in our Drupal site so that we have a destination. Joe walks through grabbing some baseball stats in SQL format for the source, and then building out the content types we'll need for teams and players.
When automating the deployment of a Drupal site, it's critical to have a good understanding of the configuration management workflow in order for deployments to be consistent and successful.
Kernel tests in Drupal enable module integration testing with Drupal core systems in a bootstrapped environment. Kernel tests bridge the gap between unit and functional tests. This tutorial focuses on writing kernel tests for the anytown module, specifically to test the ForecastClient
service's caching logic and custom username validation.
In this tutorial, we'll:
- Explore the parts of a kernel test.
- Write kernel tests for anytown module features.
- Use mocks and the Drupal container in kernel tests.
By the end of this tutorial, you should be able to get started writing kernel tests to verify your module's integration with Drupal core.
Overview of server requirements for installing and running the core software.
The Drupal-to-Drupal migration system is still a work in progress. As such, there are a few things that simply don't work, and a few others that still have kinks to be ironed out. In this tutorial, we'll look at some of the common hang-ups that we've encountered, the status of resolving those issues, and what your options are in the meantime.