From 022934a2f854b8dd510c10eafcde60fdc62c335b Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Fri, 27 Dec 2024 14:20:50 +0800 Subject: [PATCH 01/36] Update to README.md (multiple sections) --- README.md | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 6b16c69..c41111b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +# What is this README file? +The intent of this README file is to explain how Docker can be used to enable regular people to evaluate Backdrop . + # What is Backdrop? _**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in a way that preserves their Drupal-related investments of time, energy, people and money.**_ @@ -10,34 +13,32 @@ Backdrop is a web application development framework most commonly configured as - Non-Profit Organizations (NPO) - Educational Institutions (EI). -Backdrop started off as a "fork" of an immensely popular Drupal 7. The genesis of the Backdrop CMS Project was the release of Drupal 8. That release (and every subsequent Drupal release thereafter) introduced an explosion in uncertainty, complexity and cost. Some of the key goals of Backdrop are predictability, reliability, controlled complexity and maximum compatibility with the code base of Drupal 7 - especially in terms of compatibility with Drupal 7 contributed modules and themes. There are over 16,000+ contributed Drupal 7 modules and themes, representing a near-infinite range of solutions. - -Since 2013, Backdrop has remained true to its goals. Now, a Backdrop conversion can take a small fraction of the time and expense involved with migrating to a different CMS (usually Wordpress), using a cloud-based provider (WIX or Shopify) or even upgrading to the latest version of Drupal. Many organizations have already leveraged the power of Backdrop to move away from legacy Drupal, especially Drupal 7, in a way that they feel is the fastest, easiest and least expensive way possible. +Backdrop started off as a "fork" of an immensely popular Content Management System (CMS) named Drupal 7. The genesis of Backdrop was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. That release (and every subsequent Drupal release thereafter) has a similar effect. As a consequence of this, among the most important key goals of Backdrop are predictability, reliability, controlled complexity and maximum compatibility with the existing code base of Drupal 7 and its contributed modules and themes. There are over 16,000+ contributed Drupal 7 modules and themes, representing a near-infinite range of solutions. -The Backdrop Project was started over a decade ago. To date, its story is marked by a string of successes: It is being continually improved. It offers the latest technologies. New versions of Backdrop are released in a regular and methodical way. Backdrop releases are supported for a very long time. New (and converted) Backdrop modules and themes are arriving ever more frequently. It has a dedicated, mature, experienced and highly professional project team. +A Backdrop conversion can take a small fraction of the time and expense involved with migrating to a different CMS (Wordpress), going to cloud-based providers (WIX or Shopify) or even upgrading to a newer version of Drupal. To date, hundreds of organizations have leveraged the power of Backdrop to move off of Drupal (especially Drupal 7) and on to Backdrop in a manner that they feel is fastest, easiest and least expensive way possible. -The latest edition of Backdrop is **1.29.2**. - -_(a full list of every docker image available for Backdrop, including legacy and alternative versions, appears at the end of this document)_ +Since 2013, Backdrop has remained true to its key goals, and its history is marked by a string of increasingly significant achievements. Backdrop is always being continually improved. Backdrop incorporates the latest technologies. While minor released of Backdrop are released every six months, major releases are supported for a very, very long time. Converted and new Backdrop contributed modules are arriving ever more frequently. Finally, Backdrop has a dedicated, mature, experienced and highly professional project team. # What is Docker? -According to Amazon, Docker is: +Docker is a software platform that performs two important functions. First, it enables the packaging of a piece of software into a standardized unit called an image that contains everything a software needs to run. Second, it provides an execution environment, or container, into which the image may be loaded, thus making the software accessible. + +## What is a Dockerfile? +A Dockerfile is a human-redable script containing all the commands needed to create a Docker image. -_"A software platform that allows you to build, test, and deploy applications quickly. Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime."_ +## What is a Docker Image? +A Docker image is a runtime environment that the docker process loads to quickly and easily deliver a runtime environment for one or more applications or services. -# What are the Backdrop Docker Official Image(s)? -The Backdrop Docker Official Images is a collection of docker images intended to enable almost anyone to quickly and easily install Backdrop for evaluation purposes. The intent of this documentation, along with the Backdrop Docker Official Images collection, is to empower regular people to be able to install Docker and use it to "spin up" an evaluation instance of Backdrop with a minimal investment of their time and money. +## What is a Backdrop Docker Official Image? -# Backdrop Current Edition (latest) -The current edition of Backdrop is **1.29.2**. +The Backdrop Docker Official Image collection is an assortment of docker images prepared to help someone quickly and easily install Backdrop for evaluation purposes. -## MAIN +### MAIN Image The **MAIN** edition of Backdrop is the one that is downloaded by Docker when nothing more specific is provided, or when special or reserved tags are used (`latest` or `backdrop`). This is the **DEFAULT** version of Backdrop that Docker installs. -### ALTERNATIVE -The ALTERNATIVE edition(s) of Backdrop must be speci +### ALTERNATIVE Images +ALTERNATIVE edition(s) of Backdrop must be fully specified to be loaded by Docker. -_(a complete list of MAIN & ALTERNATIVE Backdrop editions, including legacy editions, editions appears at the end of this document)_ +[Click here to see a complete list of all available Official Docker Images](https://hub.docker.com/_/backdrop/tags) # Tags @@ -58,13 +59,13 @@ Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/a Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) -# Use -The fastest and easiest way to "spin up" any of the above-mentioned Backdrop containers with docker is to: +# Installation +The fastest and easiest way to "spin up" a Backdrop instance in a container is to: 1) Install docker on a host system - 2) Create a named directory to marshal docker-related Backdrop assets - 3) Create a docker startup file that references a specific Backdrop docker image - 4) Launch docker in such a way that it processes the startup file + 2) Create a named directory to hold docker-related assets + 3) Create a docker startup file referencing a Backdrop docker image + 4) Launch docker in such a way that it knows to process the startup file ## Step 1: Install docker on a host system [Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) @@ -100,7 +101,7 @@ services: MYSQL_DATABASE: backdrop ``` -## Step 4: Launch docker in such a way that it processes the startup file +## Step 4: Launch docker in such a way that it knows to process the startup file While in the `docker-eval` directory, enter the following command: `docker compose up` @@ -119,8 +120,8 @@ If the web browser is running on the same machine as docker, the Backdrop instal `http://localhost:8080` -### 'compose.yml` Embedded Credentials -The credentials embedded in the `compose.yml` will be required in the Backdrop installation routine: +### Backdrop installation credentials +Don't forget that the Backdrop installation process will need the following information to proceed in the installation process: ``` User: backdrop From db55af1607b3e45d65f6a5e359fefbec8fc5b40b Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Fri, 27 Dec 2024 14:28:50 +0800 Subject: [PATCH 02/36] Tag archive removed from end of README.md --- README.md | 21 +---- README.md.backup | 231 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+), 17 deletions(-) create mode 100644 README.md.backup diff --git a/README.md b/README.md index c41111b..aae2bcc 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,11 @@ A Docker image is a runtime environment that the docker process loads to quickly The Backdrop Docker Official Image collection is an assortment of docker images prepared to help someone quickly and easily install Backdrop for evaluation purposes. -### MAIN Image -The **MAIN** edition of Backdrop is the one that is downloaded by Docker when nothing more specific is provided, or when special or reserved tags are used (`latest` or `backdrop`). This is the **DEFAULT** version of Backdrop that Docker installs. +### What is a MAIN Docker Image? +A **MAIN** Docker image is the one that is downloaded when no specifics are provided to Docker. You can also think about it as the **DEFAULT** Backdrop edition. -### ALTERNATIVE Images -ALTERNATIVE edition(s) of Backdrop must be fully specified to be loaded by Docker. +### What is an ALTERNATE Docker Image? +an **ALTERNATIVE** Docker image is distinct from the **MAIN** or **DEFAULT** image because it incorporates a variation of some kind. In many cases, the variation is a difference in an important sub-system, like the choice of web server. Docker must be fully and specifically instructed in order to load these images. [Click here to see a complete list of all available Official Docker Images](https://hub.docker.com/_/backdrop/tags) @@ -229,16 +229,3 @@ docker run --name some-backdrop \ -d backdrop/backdrop ``` -# Backdrop Dockerfile archive -_([please review release notes before deploying](https://github.com/backdrop/backdrop/releases))_ -## 1.30.0 (coming Januaray 2025) -`1.30.2-apache` -`1.30.2-fpm` - -## 1.29.2 -[`1.29.2-apache`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1.29.2-fpm`](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) - -## 1.29.1 -`1.29.1-apache` -`1.29.1-fpm` diff --git a/README.md.backup b/README.md.backup new file mode 100644 index 0000000..aae2bcc --- /dev/null +++ b/README.md.backup @@ -0,0 +1,231 @@ +# What is this README file? +The intent of this README file is to explain how Docker can be used to enable regular people to evaluate Backdrop . + +# What is Backdrop? + +_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in a way that preserves their Drupal-related investments of time, energy, people and money.**_ + +Backdrop is a web application development framework most commonly configured as a Content Management System (CMS) for use by: + +- Small & Medium Sized Enterprises (SME) +- Governments & Government Departments +- Non-Governmental Organizations (NGO) +- Non-Profit Organizations (NPO) +- Educational Institutions (EI). + +Backdrop started off as a "fork" of an immensely popular Content Management System (CMS) named Drupal 7. The genesis of Backdrop was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. That release (and every subsequent Drupal release thereafter) has a similar effect. As a consequence of this, among the most important key goals of Backdrop are predictability, reliability, controlled complexity and maximum compatibility with the existing code base of Drupal 7 and its contributed modules and themes. There are over 16,000+ contributed Drupal 7 modules and themes, representing a near-infinite range of solutions. + +A Backdrop conversion can take a small fraction of the time and expense involved with migrating to a different CMS (Wordpress), going to cloud-based providers (WIX or Shopify) or even upgrading to a newer version of Drupal. To date, hundreds of organizations have leveraged the power of Backdrop to move off of Drupal (especially Drupal 7) and on to Backdrop in a manner that they feel is fastest, easiest and least expensive way possible. + +Since 2013, Backdrop has remained true to its key goals, and its history is marked by a string of increasingly significant achievements. Backdrop is always being continually improved. Backdrop incorporates the latest technologies. While minor released of Backdrop are released every six months, major releases are supported for a very, very long time. Converted and new Backdrop contributed modules are arriving ever more frequently. Finally, Backdrop has a dedicated, mature, experienced and highly professional project team. + +# What is Docker? +Docker is a software platform that performs two important functions. First, it enables the packaging of a piece of software into a standardized unit called an image that contains everything a software needs to run. Second, it provides an execution environment, or container, into which the image may be loaded, thus making the software accessible. + +## What is a Dockerfile? +A Dockerfile is a human-redable script containing all the commands needed to create a Docker image. + +## What is a Docker Image? +A Docker image is a runtime environment that the docker process loads to quickly and easily deliver a runtime environment for one or more applications or services. + +## What is a Backdrop Docker Official Image? + +The Backdrop Docker Official Image collection is an assortment of docker images prepared to help someone quickly and easily install Backdrop for evaluation purposes. + +### What is a MAIN Docker Image? +A **MAIN** Docker image is the one that is downloaded when no specifics are provided to Docker. You can also think about it as the **DEFAULT** Backdrop edition. + +### What is an ALTERNATE Docker Image? +an **ALTERNATIVE** Docker image is distinct from the **MAIN** or **DEFAULT** image because it incorporates a variation of some kind. In many cases, the variation is a difference in an important sub-system, like the choice of web server. Docker must be fully and specifically instructed in order to load these images. + +[Click here to see a complete list of all available Official Docker Images](https://hub.docker.com/_/backdrop/tags) + +# Tags + +## Apache 2 (apache) + +[`latest`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) +[`backdrop`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) +[`1.29.2-apache`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) +[`1.29.2`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) +[`1-apache`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) +[`1`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) + +Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) + +## FastCGI Process Manager (fpm) +[`1.29.2-fpm`](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) +[`1-fpm`](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) + +Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) + +# Installation +The fastest and easiest way to "spin up" a Backdrop instance in a container is to: + + 1) Install docker on a host system + 2) Create a named directory to hold docker-related assets + 3) Create a docker startup file referencing a Backdrop docker image + 4) Launch docker in such a way that it knows to process the startup file + +## Step 1: Install docker on a host system +[Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) + +## Step 2: Create a named directory to marshal docker-related Backdrop assets +In this case we will create a directory named `backdrop-eval` to help assemble together some Backdrop-related docker assets + +`md backdrop-eval` + +`cd backdrop-eval` + +## Step 3: Create a docker startup file that references a specific Backdrop docker image +In the `backdrop-eval` directory, create `compose.yml` file with the following contents: + +```yaml +services: + backdrop: + build: + context: ./1/apache + ports: + - 8088:80 + environment: + BACKDROP_DB_HOST: db + BACKDROP_DB_USER: backdrop + BACKDROP_DB_PASSWORD: backdrop + + db: + image: mysql + environment: + MYSQL_USER: backdrop + MYSQL_PASSWORD: backdrop + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' + MYSQL_DATABASE: backdrop +``` + +## Step 4: Launch docker in such a way that it knows to process the startup file +While in the `docker-eval` directory, enter the following command: + +`docker compose up` + +This command instructs docker to process the `compose.yml` file. The screen should immediately begin to fill with startup messages as docker composes the Backdrop runtime environment. After a minute or so, the pace of new messages should settle down, with just status messages being displayed. At this point the Backdrop installation screen should be accessible via a web browser. + +### Accessing a remote docker container +If the web browser is running on a different machine than the one running docker, the Backdrop installation should be accessible at: + +`http://{host-ip}:8080`. + +Where `{host-ip}` is the IP address of the machine running docker. + +### Accessing a local docker container +If the web browser is running on the same machine as docker, the Backdrop installation should be accessible at: + +`http://localhost:8080` + +### Backdrop installation credentials +Don't forget that the Backdrop installation process will need the following information to proceed in the installation process: + +``` +User: backdrop +Password: backdrop +Database: backdrop +``` + +## How to validate the docker-based backdrop runtime environment +Validating that backdrop indeed constructed a valid runtime environment may be accomplished with the following command: + +``` +docker ps +``` + +The resulting listing should include TWO (2) docker containers, one for the database server (db), one for the CMS (backdrop). + +## How to access the docker-based backdrop runtime environment +Accessing the docker container may be accomplished with the following command: + +``` +docker exec -it backdrop bash +``` + +## Trying out other docker images +The above `compose.yml` specifically references the `backdrop/backdrop` docker image. + +This is just an example to help get you started. Once you are familiar with how to "spin up" a docker image, there is nothing to stop you from trying out different docker images to find the one you like the best. A complete listing of all available backdrop docker images is available at the end of this document. + +# About Backdrop +![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Vertical_0.png) + +# License + +View [license information](https://www.drupal.org/licensing/faq) for the software contained in this image. + +# Feedback + +## Issue Queue(s) +- [Backdrop CMS Core Issue Queue](https://github.com/backdrop/backdrop-issues/issues) +- [Backdrop CMS Contrib at Github.com](https://github.com/backdrop-contrib) - Each contrib project has it's own issue queue. + +## Documentation +- [Backdrop CMS Documentation](https://docs.backdropcms.org/) + +## Contributing +- [Contribute to the Backdrop CMS Open Source Project](https://docs.backdropcms.org/documentation/contributors-guide) + +## Official Docker Image + +https://github.com/docker-library/official-images/blob/master/library/backdrop + +# Expert Mode + +## Installing additional libraries & extensions +These images do not provide any additional PHP extensions or other libraries, even if they are required by popular plugins. There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size. + +## Generating your own docker image(s) +If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`drupal:7` Dockerfile](https://github.com/docker-library/drupal/blob/bee08efba505b740a14d68254d6e51af7ab2f3ea/7/Dockerfile#L6-9) has an example of doing this. + +The following Docker Hub features can help with the task of keeping your dependent images up-to-date: + +- [Automated Builds](https://docs.docker.com/docker-hub/builds/) let Docker Hub automatically build your Dockerfile each time you push changes to it. +- [Repository Links](https://docs.docker.com/docker-hub/builds/#repository-links) can ensure that your image is also rebuilt any time `drupal` is updated. + +## Launching backdrop manually using `docker run` commands + +### MySQL +NOTE: A pre-configured database server must already exist before a backdrop container can be launched. + +Check out the [official mysql image](https://hub.docker.com/_/mysql/) for more info on spinning up a DB. + +## Backdrop +The basic pattern for starting a `backdrop` instance (given that the `BACKDROP_DB_NAME` **already exists** on a running MySQL server container) is: + +```console +docker run --name some-backdrop --link some-mysql:mysql -d backdrop/backdrop +``` + +The following environment variables are also honored for configuring your Backdrop CMS instance: + +- `-e BACKDROP_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) +- `-e BACKDROP_DB_USER=...` (defaults to "root") +- `-e BACKDROP_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) +- `-e BACKDROP_DB_NAME=...` (defaults to "backdrop") +- `-e BACKDROP_DB_PORT=...` (defaults to 3306) +- `-e BACKDROP_DB_DRIVER=...` (defaults to "mysql") + + +If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used: + +```console +docker run --name some-backdrop --link some-mysql:mysql -p 8080:80 -d backdrop/backdrop +``` + +Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser. + +If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `BACKDROP_DB_HOST`/`BACKDROP_DB_PORT` along with the password in `BACKDROP_DB_PASSWORD` and the username in `BACKDROP_DB_USER` (if it is something other than `root`): + +```console +docker run --name some-backdrop \ + -e BACKDROP_DB_HOST=10.1.2.3 \ + -e BACKDROP_DB_PORT=10432 \ + -e BACKDROP_DB_USER=... \ + -e BACKDROP_DB_PASSWORD=... \ + -d backdrop/backdrop +``` + From dd2909dfec55f79fdea7a776c80cc9cbcc855c68 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 10:50:45 +0800 Subject: [PATCH 03/36] Extensive changes to README.md - simplified and semi-finalized --- README.md | 228 +++++++++++++++++++++++------------------------ README.md.backup | 228 +++++++++++++++++++++++------------------------ 2 files changed, 222 insertions(+), 234 deletions(-) diff --git a/README.md b/README.md index aae2bcc..9c623e0 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,56 @@ -# What is this README file? -The intent of this README file is to explain how Docker can be used to enable regular people to evaluate Backdrop . +# What is This README File? +This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. # What is Backdrop? -_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in a way that preserves their Drupal-related investments of time, energy, people and money.**_ +_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not abandoned.**_ -Backdrop is a web application development framework most commonly configured as a Content Management System (CMS) for use by: +Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for: -- Small & Medium Sized Enterprises (SME) -- Governments & Government Departments -- Non-Governmental Organizations (NGO) -- Non-Profit Organizations (NPO) -- Educational Institutions (EI). +- Primary, Secondary and Tertiary Educational Institutions +- National, Regional and Municipal Governments +- Small & Medium Sized Enterprises +- Non-Governmental Organizations +- Non-Profit Organizations -Backdrop started off as a "fork" of an immensely popular Content Management System (CMS) named Drupal 7. The genesis of Backdrop was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. That release (and every subsequent Drupal release thereafter) has a similar effect. As a consequence of this, among the most important key goals of Backdrop are predictability, reliability, controlled complexity and maximum compatibility with the existing code base of Drupal 7 and its contributed modules and themes. There are over 16,000+ contributed Drupal 7 modules and themes, representing a near-infinite range of solutions. +## History +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar effect, leaving entire communities confused and unhappy about what to do with their Drupal-based websites. Observing the chaos in the Drupal world, Backdrop was born. -A Backdrop conversion can take a small fraction of the time and expense involved with migrating to a different CMS (Wordpress), going to cloud-based providers (WIX or Shopify) or even upgrading to a newer version of Drupal. To date, hundreds of organizations have leveraged the power of Backdrop to move off of Drupal (especially Drupal 7) and on to Backdrop in a manner that they feel is fastest, easiest and least expensive way possible. +## Key Principles +Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code runs in Backdrop. This is due to the principle of compatibility, which resulted in a "Drupal compatibility layer" in Backdrop, an important and highly useful development. One of the major reasons why Backdrop has gone to great lengths to maintains a high degree of compatibility with Drupal is because of the size and scale of the extended Drupal ecosystem, which includes over 16,000+ contributed modules and themes that resulted from over a decade of distributed development by thousands of developers. Contributed Drupal modules and themes number over 150,000 individual assets, and range across every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. -Since 2013, Backdrop has remained true to its key goals, and its history is marked by a string of increasingly significant achievements. Backdrop is always being continually improved. Backdrop incorporates the latest technologies. While minor released of Backdrop are released every six months, major releases are supported for a very, very long time. Converted and new Backdrop contributed modules are arriving ever more frequently. Finally, Backdrop has a dedicated, mature, experienced and highly professional project team. +## Cost of Adoption +Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. + +## Track Record +Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is a software platform that performs two important functions. First, it enables the packaging of a piece of software into a standardized unit called an image that contains everything a software needs to run. Second, it provides an execution environment, or container, into which the image may be loaded, thus making the software accessible. +Docker is an application that can significantly reduce the time, effort and cost of deploying software. In fact, reduces the time needed to install and configure an application by at least an order of magnitude: From hours down to minutes or even seconds. + +Functionally speaking, Docker offers two main services: + +- Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". + +- Docker provides a **run** environment wherein a Docker Image may be loaded and launched, thereby making the target application within that image accessible. The short name for the Docker Runtime Environment is "container". ## What is a Dockerfile? -A Dockerfile is a human-redable script containing all the commands needed to create a Docker image. +A Dockerfile is a human-redable script containing all the commands Docker needs to alter a source Docker Image into a target Docker Image. There is no short name for a Dockerfile, they are simply referred to as a "Dockerfile". ## What is a Docker Image? -A Docker image is a runtime environment that the docker process loads to quickly and easily deliver a runtime environment for one or more applications or services. +A Docker Image ("image") is the result of a Docker build process. ## What is a Backdrop Docker Official Image? -The Backdrop Docker Official Image collection is an assortment of docker images prepared to help someone quickly and easily install Backdrop for evaluation purposes. +A Backdrop Docker Official Image is a Docker image that exposes the functionality of a Backdrop CMS instance in a container. These images have been prepared by the Backdrop CMS Project Team in order to spread awareness about Backdrop CMS and to help people quickly and easily deploy Backdrop CMS for evaluation purposes. ### What is a MAIN Docker Image? -A **MAIN** Docker image is the one that is downloaded when no specifics are provided to Docker. You can also think about it as the **DEFAULT** Backdrop edition. +The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker when an incomplete image specifier has been supplied. This capability was mostly developed for convenience, but it can also be thought of as a "catchall" or "fallback" strategy. It is also very useful when the latest version of an image is unknown as it will always install the preferred (and latest) version of an image unless instructed not to do so. ### What is an ALTERNATE Docker Image? -an **ALTERNATIVE** Docker image is distinct from the **MAIN** or **DEFAULT** image because it incorporates a variation of some kind. In many cases, the variation is a difference in an important sub-system, like the choice of web server. Docker must be fully and specifically instructed in order to load these images. +**ALTERNATE** Docker images are a different story. These images must be fully specified if they are to be loaded and launched by Docker specifically _because_ they are not the prefered, latest image. Instead, they represent an exploration of "what if" scenarios with respect to Backdrop. Usually, this involves the incorporation of a different software sub-system, such as a different web server. Sometimes they represent a different version of the language that Backdrop was implemented in. Sometimes they represent a "snapshot" in the history of the development of Backdrop. In any event, accessing these images requires that they be fully and completely specified to Docker. -[Click here to see a complete list of all available Official Docker Images](https://hub.docker.com/_/backdrop/tags) +[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) # Tags @@ -60,68 +72,94 @@ Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/a Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) # Installation -The fastest and easiest way to "spin up" a Backdrop instance in a container is to: +The fastest and easiest way to "spin up" Backdrop in a Docker container is to: - 1) Install docker on a host system - 2) Create a named directory to hold docker-related assets - 3) Create a docker startup file referencing a Backdrop docker image - 4) Launch docker in such a way that it knows to process the startup file + 1) Ensure Docker is installed + 2) Create directory to hold docker assets + 3) Create a docker startup file that references a Backdrop Docker Image + 4) Launch docker so that it knows to process the recently created startup file -## Step 1: Install docker on a host system -[Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) +## Step 1: Ensure Docker is Installed +[Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) -## Step 2: Create a named directory to marshal docker-related Backdrop assets -In this case we will create a directory named `backdrop-eval` to help assemble together some Backdrop-related docker assets +## Step 2: Create a Directory to Hold Docker assets +Create a directory named `backdrop-eval` to hold any Backdrop-related Docker assets -`md backdrop-eval` +``` +md backdrop-eval -`cd backdrop-eval` +cd backdrop-eval +``` -## Step 3: Create a docker startup file that references a specific Backdrop docker image +## Step 3: Create a Docker Startup File that References a Backdrop Docker Image In the `backdrop-eval` directory, create `compose.yml` file with the following contents: +``` -```yaml services: + backdrop: - build: - context: ./1/apache + + image: backdrop:latest + + name: backdrop + ports: + - 8088:80 + environment: - BACKDROP_DB_HOST: db + + BACKDROP_DB_HOST: mysql + BACKDROP_DB_USER: backdrop + BACKDROP_DB_PASSWORD: backdrop - db: - image: mysql + mysql: + + image: mysql:latest + + name: mysql + environment: + MYSQL_USER: backdrop + MYSQL_PASSWORD: backdrop - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' + MYSQL_DATABASE: backdrop + + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' ``` -## Step 4: Launch docker in such a way that it knows to process the startup file +## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Startup File While in the `docker-eval` directory, enter the following command: -`docker compose up` +``` +docker compose up +``` This command instructs docker to process the `compose.yml` file. The screen should immediately begin to fill with startup messages as docker composes the Backdrop runtime environment. After a minute or so, the pace of new messages should settle down, with just status messages being displayed. At this point the Backdrop installation screen should be accessible via a web browser. -### Accessing a remote docker container -If the web browser is running on a different machine than the one running docker, the Backdrop installation should be accessible at: +# How to Access Backdrop in a Local Docker Container +If the web browser is running on **the same machine** as docker, Backdrop should be accessible at: + +``` +http://localhost:8080 +``` -`http://{host-ip}:8080`. +# How to Access Backdrop in a Remote Docker Container +If the web browser is running on **a different machine** than the one running docker, Backdrop should be accessible at: -Where `{host-ip}` is the IP address of the machine running docker. +``` +http://{host-ip}:8080 +``` -### Accessing a local docker container -If the web browser is running on the same machine as docker, the Backdrop installation should be accessible at: +_(where `{host-ip}` is the IP address of the machine running docker)_ -`http://localhost:8080` -### Backdrop installation credentials -Don't forget that the Backdrop installation process will need the following information to proceed in the installation process: +# Backdrop Installation - Database Credentials +Don't forget that the Backdrop install requires the following database credentials to proceed: ``` User: backdrop @@ -129,26 +167,42 @@ Password: backdrop Database: backdrop ``` -## How to validate the docker-based backdrop runtime environment -Validating that backdrop indeed constructed a valid runtime environment may be accomplished with the following command: +# Validating Backdrop-Related Docker Containers +Validating that Docker indeed constructed a valid runtime environment for Backdrop may be accomplished with the following command: ``` docker ps ``` -The resulting listing should include TWO (2) docker containers, one for the database server (db), one for the CMS (backdrop). +The resulting listing should include TWO (2) docker containers: -## How to access the docker-based backdrop runtime environment -Accessing the docker container may be accomplished with the following command: +- One for the MySQL database server that Backdrop requires (mysql) +- One for Backdrop itself (backdrop) + +``` +[example docker ps output here...] +``` + +## How to Access the Backdrop host +Accessing the Backdrop host can be accomplished by issuing the following command on the machine running Docker: ``` docker exec -it backdrop bash ``` -## Trying out other docker images -The above `compose.yml` specifically references the `backdrop/backdrop` docker image. +## Trying Out the ALTERNATE Docker Images +The example `compose.yml` specifically references the `backdrop:latest` docker image. + +This is just in order to get people new to Docker started quickly and easily. Once someone becomes more familiar with Docker and using it to "spin up" containers, there is no reason why they wouldn't want to be curious about the **ALTERNATE** docker images, and wondering if one of those images suited their requirements better. + +To accomplish that, the only thing that needs be done is change the image specifier in the `backdrop` section of the `compose.yml` file. The general format to identify a specific Docker image is: + +``` +repository:image +``` + -This is just an example to help get you started. Once you are familiar with how to "spin up" a docker image, there is nothing to stop you from trying out different docker images to find the one you like the best. A complete listing of all available backdrop docker images is available at the end of this document. +[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) # About Backdrop ![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Vertical_0.png) @@ -169,63 +223,3 @@ View [license information](https://www.drupal.org/licensing/faq) for the softwar ## Contributing - [Contribute to the Backdrop CMS Open Source Project](https://docs.backdropcms.org/documentation/contributors-guide) -## Official Docker Image - -https://github.com/docker-library/official-images/blob/master/library/backdrop - -# Expert Mode - -## Installing additional libraries & extensions -These images do not provide any additional PHP extensions or other libraries, even if they are required by popular plugins. There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size. - -## Generating your own docker image(s) -If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`drupal:7` Dockerfile](https://github.com/docker-library/drupal/blob/bee08efba505b740a14d68254d6e51af7ab2f3ea/7/Dockerfile#L6-9) has an example of doing this. - -The following Docker Hub features can help with the task of keeping your dependent images up-to-date: - -- [Automated Builds](https://docs.docker.com/docker-hub/builds/) let Docker Hub automatically build your Dockerfile each time you push changes to it. -- [Repository Links](https://docs.docker.com/docker-hub/builds/#repository-links) can ensure that your image is also rebuilt any time `drupal` is updated. - -## Launching backdrop manually using `docker run` commands - -### MySQL -NOTE: A pre-configured database server must already exist before a backdrop container can be launched. - -Check out the [official mysql image](https://hub.docker.com/_/mysql/) for more info on spinning up a DB. - -## Backdrop -The basic pattern for starting a `backdrop` instance (given that the `BACKDROP_DB_NAME` **already exists** on a running MySQL server container) is: - -```console -docker run --name some-backdrop --link some-mysql:mysql -d backdrop/backdrop -``` - -The following environment variables are also honored for configuring your Backdrop CMS instance: - -- `-e BACKDROP_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) -- `-e BACKDROP_DB_USER=...` (defaults to "root") -- `-e BACKDROP_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) -- `-e BACKDROP_DB_NAME=...` (defaults to "backdrop") -- `-e BACKDROP_DB_PORT=...` (defaults to 3306) -- `-e BACKDROP_DB_DRIVER=...` (defaults to "mysql") - - -If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used: - -```console -docker run --name some-backdrop --link some-mysql:mysql -p 8080:80 -d backdrop/backdrop -``` - -Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser. - -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `BACKDROP_DB_HOST`/`BACKDROP_DB_PORT` along with the password in `BACKDROP_DB_PASSWORD` and the username in `BACKDROP_DB_USER` (if it is something other than `root`): - -```console -docker run --name some-backdrop \ - -e BACKDROP_DB_HOST=10.1.2.3 \ - -e BACKDROP_DB_PORT=10432 \ - -e BACKDROP_DB_USER=... \ - -e BACKDROP_DB_PASSWORD=... \ - -d backdrop/backdrop -``` - diff --git a/README.md.backup b/README.md.backup index aae2bcc..9c623e0 100644 --- a/README.md.backup +++ b/README.md.backup @@ -1,44 +1,56 @@ -# What is this README file? -The intent of this README file is to explain how Docker can be used to enable regular people to evaluate Backdrop . +# What is This README File? +This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. # What is Backdrop? -_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in a way that preserves their Drupal-related investments of time, energy, people and money.**_ +_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not abandoned.**_ -Backdrop is a web application development framework most commonly configured as a Content Management System (CMS) for use by: +Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for: -- Small & Medium Sized Enterprises (SME) -- Governments & Government Departments -- Non-Governmental Organizations (NGO) -- Non-Profit Organizations (NPO) -- Educational Institutions (EI). +- Primary, Secondary and Tertiary Educational Institutions +- National, Regional and Municipal Governments +- Small & Medium Sized Enterprises +- Non-Governmental Organizations +- Non-Profit Organizations -Backdrop started off as a "fork" of an immensely popular Content Management System (CMS) named Drupal 7. The genesis of Backdrop was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. That release (and every subsequent Drupal release thereafter) has a similar effect. As a consequence of this, among the most important key goals of Backdrop are predictability, reliability, controlled complexity and maximum compatibility with the existing code base of Drupal 7 and its contributed modules and themes. There are over 16,000+ contributed Drupal 7 modules and themes, representing a near-infinite range of solutions. +## History +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar effect, leaving entire communities confused and unhappy about what to do with their Drupal-based websites. Observing the chaos in the Drupal world, Backdrop was born. -A Backdrop conversion can take a small fraction of the time and expense involved with migrating to a different CMS (Wordpress), going to cloud-based providers (WIX or Shopify) or even upgrading to a newer version of Drupal. To date, hundreds of organizations have leveraged the power of Backdrop to move off of Drupal (especially Drupal 7) and on to Backdrop in a manner that they feel is fastest, easiest and least expensive way possible. +## Key Principles +Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code runs in Backdrop. This is due to the principle of compatibility, which resulted in a "Drupal compatibility layer" in Backdrop, an important and highly useful development. One of the major reasons why Backdrop has gone to great lengths to maintains a high degree of compatibility with Drupal is because of the size and scale of the extended Drupal ecosystem, which includes over 16,000+ contributed modules and themes that resulted from over a decade of distributed development by thousands of developers. Contributed Drupal modules and themes number over 150,000 individual assets, and range across every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. -Since 2013, Backdrop has remained true to its key goals, and its history is marked by a string of increasingly significant achievements. Backdrop is always being continually improved. Backdrop incorporates the latest technologies. While minor released of Backdrop are released every six months, major releases are supported for a very, very long time. Converted and new Backdrop contributed modules are arriving ever more frequently. Finally, Backdrop has a dedicated, mature, experienced and highly professional project team. +## Cost of Adoption +Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. + +## Track Record +Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is a software platform that performs two important functions. First, it enables the packaging of a piece of software into a standardized unit called an image that contains everything a software needs to run. Second, it provides an execution environment, or container, into which the image may be loaded, thus making the software accessible. +Docker is an application that can significantly reduce the time, effort and cost of deploying software. In fact, reduces the time needed to install and configure an application by at least an order of magnitude: From hours down to minutes or even seconds. + +Functionally speaking, Docker offers two main services: + +- Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". + +- Docker provides a **run** environment wherein a Docker Image may be loaded and launched, thereby making the target application within that image accessible. The short name for the Docker Runtime Environment is "container". ## What is a Dockerfile? -A Dockerfile is a human-redable script containing all the commands needed to create a Docker image. +A Dockerfile is a human-redable script containing all the commands Docker needs to alter a source Docker Image into a target Docker Image. There is no short name for a Dockerfile, they are simply referred to as a "Dockerfile". ## What is a Docker Image? -A Docker image is a runtime environment that the docker process loads to quickly and easily deliver a runtime environment for one or more applications or services. +A Docker Image ("image") is the result of a Docker build process. ## What is a Backdrop Docker Official Image? -The Backdrop Docker Official Image collection is an assortment of docker images prepared to help someone quickly and easily install Backdrop for evaluation purposes. +A Backdrop Docker Official Image is a Docker image that exposes the functionality of a Backdrop CMS instance in a container. These images have been prepared by the Backdrop CMS Project Team in order to spread awareness about Backdrop CMS and to help people quickly and easily deploy Backdrop CMS for evaluation purposes. ### What is a MAIN Docker Image? -A **MAIN** Docker image is the one that is downloaded when no specifics are provided to Docker. You can also think about it as the **DEFAULT** Backdrop edition. +The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker when an incomplete image specifier has been supplied. This capability was mostly developed for convenience, but it can also be thought of as a "catchall" or "fallback" strategy. It is also very useful when the latest version of an image is unknown as it will always install the preferred (and latest) version of an image unless instructed not to do so. ### What is an ALTERNATE Docker Image? -an **ALTERNATIVE** Docker image is distinct from the **MAIN** or **DEFAULT** image because it incorporates a variation of some kind. In many cases, the variation is a difference in an important sub-system, like the choice of web server. Docker must be fully and specifically instructed in order to load these images. +**ALTERNATE** Docker images are a different story. These images must be fully specified if they are to be loaded and launched by Docker specifically _because_ they are not the prefered, latest image. Instead, they represent an exploration of "what if" scenarios with respect to Backdrop. Usually, this involves the incorporation of a different software sub-system, such as a different web server. Sometimes they represent a different version of the language that Backdrop was implemented in. Sometimes they represent a "snapshot" in the history of the development of Backdrop. In any event, accessing these images requires that they be fully and completely specified to Docker. -[Click here to see a complete list of all available Official Docker Images](https://hub.docker.com/_/backdrop/tags) +[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) # Tags @@ -60,68 +72,94 @@ Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/a Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) # Installation -The fastest and easiest way to "spin up" a Backdrop instance in a container is to: +The fastest and easiest way to "spin up" Backdrop in a Docker container is to: - 1) Install docker on a host system - 2) Create a named directory to hold docker-related assets - 3) Create a docker startup file referencing a Backdrop docker image - 4) Launch docker in such a way that it knows to process the startup file + 1) Ensure Docker is installed + 2) Create directory to hold docker assets + 3) Create a docker startup file that references a Backdrop Docker Image + 4) Launch docker so that it knows to process the recently created startup file -## Step 1: Install docker on a host system -[Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) +## Step 1: Ensure Docker is Installed +[Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) -## Step 2: Create a named directory to marshal docker-related Backdrop assets -In this case we will create a directory named `backdrop-eval` to help assemble together some Backdrop-related docker assets +## Step 2: Create a Directory to Hold Docker assets +Create a directory named `backdrop-eval` to hold any Backdrop-related Docker assets -`md backdrop-eval` +``` +md backdrop-eval -`cd backdrop-eval` +cd backdrop-eval +``` -## Step 3: Create a docker startup file that references a specific Backdrop docker image +## Step 3: Create a Docker Startup File that References a Backdrop Docker Image In the `backdrop-eval` directory, create `compose.yml` file with the following contents: +``` -```yaml services: + backdrop: - build: - context: ./1/apache + + image: backdrop:latest + + name: backdrop + ports: + - 8088:80 + environment: - BACKDROP_DB_HOST: db + + BACKDROP_DB_HOST: mysql + BACKDROP_DB_USER: backdrop + BACKDROP_DB_PASSWORD: backdrop - db: - image: mysql + mysql: + + image: mysql:latest + + name: mysql + environment: + MYSQL_USER: backdrop + MYSQL_PASSWORD: backdrop - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' + MYSQL_DATABASE: backdrop + + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' ``` -## Step 4: Launch docker in such a way that it knows to process the startup file +## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Startup File While in the `docker-eval` directory, enter the following command: -`docker compose up` +``` +docker compose up +``` This command instructs docker to process the `compose.yml` file. The screen should immediately begin to fill with startup messages as docker composes the Backdrop runtime environment. After a minute or so, the pace of new messages should settle down, with just status messages being displayed. At this point the Backdrop installation screen should be accessible via a web browser. -### Accessing a remote docker container -If the web browser is running on a different machine than the one running docker, the Backdrop installation should be accessible at: +# How to Access Backdrop in a Local Docker Container +If the web browser is running on **the same machine** as docker, Backdrop should be accessible at: + +``` +http://localhost:8080 +``` -`http://{host-ip}:8080`. +# How to Access Backdrop in a Remote Docker Container +If the web browser is running on **a different machine** than the one running docker, Backdrop should be accessible at: -Where `{host-ip}` is the IP address of the machine running docker. +``` +http://{host-ip}:8080 +``` -### Accessing a local docker container -If the web browser is running on the same machine as docker, the Backdrop installation should be accessible at: +_(where `{host-ip}` is the IP address of the machine running docker)_ -`http://localhost:8080` -### Backdrop installation credentials -Don't forget that the Backdrop installation process will need the following information to proceed in the installation process: +# Backdrop Installation - Database Credentials +Don't forget that the Backdrop install requires the following database credentials to proceed: ``` User: backdrop @@ -129,26 +167,42 @@ Password: backdrop Database: backdrop ``` -## How to validate the docker-based backdrop runtime environment -Validating that backdrop indeed constructed a valid runtime environment may be accomplished with the following command: +# Validating Backdrop-Related Docker Containers +Validating that Docker indeed constructed a valid runtime environment for Backdrop may be accomplished with the following command: ``` docker ps ``` -The resulting listing should include TWO (2) docker containers, one for the database server (db), one for the CMS (backdrop). +The resulting listing should include TWO (2) docker containers: -## How to access the docker-based backdrop runtime environment -Accessing the docker container may be accomplished with the following command: +- One for the MySQL database server that Backdrop requires (mysql) +- One for Backdrop itself (backdrop) + +``` +[example docker ps output here...] +``` + +## How to Access the Backdrop host +Accessing the Backdrop host can be accomplished by issuing the following command on the machine running Docker: ``` docker exec -it backdrop bash ``` -## Trying out other docker images -The above `compose.yml` specifically references the `backdrop/backdrop` docker image. +## Trying Out the ALTERNATE Docker Images +The example `compose.yml` specifically references the `backdrop:latest` docker image. + +This is just in order to get people new to Docker started quickly and easily. Once someone becomes more familiar with Docker and using it to "spin up" containers, there is no reason why they wouldn't want to be curious about the **ALTERNATE** docker images, and wondering if one of those images suited their requirements better. + +To accomplish that, the only thing that needs be done is change the image specifier in the `backdrop` section of the `compose.yml` file. The general format to identify a specific Docker image is: + +``` +repository:image +``` + -This is just an example to help get you started. Once you are familiar with how to "spin up" a docker image, there is nothing to stop you from trying out different docker images to find the one you like the best. A complete listing of all available backdrop docker images is available at the end of this document. +[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) # About Backdrop ![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Vertical_0.png) @@ -169,63 +223,3 @@ View [license information](https://www.drupal.org/licensing/faq) for the softwar ## Contributing - [Contribute to the Backdrop CMS Open Source Project](https://docs.backdropcms.org/documentation/contributors-guide) -## Official Docker Image - -https://github.com/docker-library/official-images/blob/master/library/backdrop - -# Expert Mode - -## Installing additional libraries & extensions -These images do not provide any additional PHP extensions or other libraries, even if they are required by popular plugins. There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size. - -## Generating your own docker image(s) -If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`drupal:7` Dockerfile](https://github.com/docker-library/drupal/blob/bee08efba505b740a14d68254d6e51af7ab2f3ea/7/Dockerfile#L6-9) has an example of doing this. - -The following Docker Hub features can help with the task of keeping your dependent images up-to-date: - -- [Automated Builds](https://docs.docker.com/docker-hub/builds/) let Docker Hub automatically build your Dockerfile each time you push changes to it. -- [Repository Links](https://docs.docker.com/docker-hub/builds/#repository-links) can ensure that your image is also rebuilt any time `drupal` is updated. - -## Launching backdrop manually using `docker run` commands - -### MySQL -NOTE: A pre-configured database server must already exist before a backdrop container can be launched. - -Check out the [official mysql image](https://hub.docker.com/_/mysql/) for more info on spinning up a DB. - -## Backdrop -The basic pattern for starting a `backdrop` instance (given that the `BACKDROP_DB_NAME` **already exists** on a running MySQL server container) is: - -```console -docker run --name some-backdrop --link some-mysql:mysql -d backdrop/backdrop -``` - -The following environment variables are also honored for configuring your Backdrop CMS instance: - -- `-e BACKDROP_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) -- `-e BACKDROP_DB_USER=...` (defaults to "root") -- `-e BACKDROP_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) -- `-e BACKDROP_DB_NAME=...` (defaults to "backdrop") -- `-e BACKDROP_DB_PORT=...` (defaults to 3306) -- `-e BACKDROP_DB_DRIVER=...` (defaults to "mysql") - - -If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used: - -```console -docker run --name some-backdrop --link some-mysql:mysql -p 8080:80 -d backdrop/backdrop -``` - -Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser. - -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `BACKDROP_DB_HOST`/`BACKDROP_DB_PORT` along with the password in `BACKDROP_DB_PASSWORD` and the username in `BACKDROP_DB_USER` (if it is something other than `root`): - -```console -docker run --name some-backdrop \ - -e BACKDROP_DB_HOST=10.1.2.3 \ - -e BACKDROP_DB_PORT=10432 \ - -e BACKDROP_DB_USER=... \ - -e BACKDROP_DB_PASSWORD=... \ - -d backdrop/backdrop -``` - From c8b738c034490dfae62b1301562b03266f722ac4 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 11:02:41 +0800 Subject: [PATCH 04/36] Cleaned up README.md, removed first heading (redundant) --- README.md | 5 ++--- README.md.backup | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9c623e0..4611e67 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -# What is This README File? This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. # What is Backdrop? @@ -14,10 +13,10 @@ Backdrop is a web application development framework frequenty deployed in the gu - Non-Profit Organizations ## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar effect, leaving entire communities confused and unhappy about what to do with their Drupal-based websites. Observing the chaos in the Drupal world, Backdrop was born. +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with respect to updating the "legacy" and now "unsupported" Drupal-based websites. Today, more than 50% of all Drupal websites remain deployed on "legacy" and "unsupported" Drupal versions. ## Key Principles -Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code runs in Backdrop. This is due to the principle of compatibility, which resulted in a "Drupal compatibility layer" in Backdrop, an important and highly useful development. One of the major reasons why Backdrop has gone to great lengths to maintains a high degree of compatibility with Drupal is because of the size and scale of the extended Drupal ecosystem, which includes over 16,000+ contributed modules and themes that resulted from over a decade of distributed development by thousands of developers. Contributed Drupal modules and themes number over 150,000 individual assets, and range across every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. +Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code can run in Backdrop. This is especially true of Drupal 7, which still composes about 1/3 of all reported Drupal installations. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop, which was an important and highly useful development in the evolution of Backdrop. Another reason for Drupal 7 compatibility is a pragmatic one: The sheer size and scale of the extended Drupal ecosystem, which includes over 16,000+ individually contributed modules and themes. This massive amount of innovation resulted from over a decade of distributed development by thousands of developers, and resulted in over 150,000 individual pieces of freely available intellectual property assets that range across nearly every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. ## Cost of Adoption Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. diff --git a/README.md.backup b/README.md.backup index 9c623e0..44597b8 100644 --- a/README.md.backup +++ b/README.md.backup @@ -14,10 +14,10 @@ Backdrop is a web application development framework frequenty deployed in the gu - Non-Profit Organizations ## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar effect, leaving entire communities confused and unhappy about what to do with their Drupal-based websites. Observing the chaos in the Drupal world, Backdrop was born. +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with respect to updating the "legacy" and now "unsupported" Drupal-based websites. Today, more than 50% of all Drupal websites remain deployed on "legacy" and "unsupported" Drupal versions. ## Key Principles -Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code runs in Backdrop. This is due to the principle of compatibility, which resulted in a "Drupal compatibility layer" in Backdrop, an important and highly useful development. One of the major reasons why Backdrop has gone to great lengths to maintains a high degree of compatibility with Drupal is because of the size and scale of the extended Drupal ecosystem, which includes over 16,000+ contributed modules and themes that resulted from over a decade of distributed development by thousands of developers. Contributed Drupal modules and themes number over 150,000 individual assets, and range across every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. +Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code can run in Backdrop. This is especially true of Drupal 7, which still composes about 1/3 of all reported Drupal installations. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop, which was an important and highly useful development in the evolution of Backdrop. Another reason for Drupal 7 compatibility is a pragmatic one: The sheer size and scale of the extended Drupal ecosystem, which includes over 16,000+ individually contributed modules and themes. This massive amount of innovation resulted from over a decade of distributed development by thousands of developers, and resulted in over 150,000 individual pieces of freely available intellectual property assets that range across nearly every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. ## Cost of Adoption Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. From 227925e598bb82ff7ddd0266155b8f1b016f8df7 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 11:06:16 +0800 Subject: [PATCH 05/36] missing word (it) --- README.md | 2 +- README.md.backup | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 4611e67..74e9823 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Converting a Drupal website to Backdrop can take a fraction of the time and expe Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is an application that can significantly reduce the time, effort and cost of deploying software. In fact, reduces the time needed to install and configure an application by at least an order of magnitude: From hours down to minutes or even seconds. +Docker is an application that can significantly reduce the time, effort and cost of deploying software. In fact, it reduces the time needed to install and configure an application by at least an order of magnitude: From hours down to minutes or even seconds. Functionally speaking, Docker offers two main services: diff --git a/README.md.backup b/README.md.backup index 44597b8..4611e67 100644 --- a/README.md.backup +++ b/README.md.backup @@ -1,4 +1,3 @@ -# What is This README File? This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. # What is Backdrop? From b6e6f1eebdd56edbb1f42343d1d12a38f79ac916 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 11:07:39 +0800 Subject: [PATCH 06/36] Tightened Docker section --- README.md | 4 +--- README.md.backup | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 74e9823..b4599fa 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,7 @@ Converting a Drupal website to Backdrop can take a fraction of the time and expe Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is an application that can significantly reduce the time, effort and cost of deploying software. In fact, it reduces the time needed to install and configure an application by at least an order of magnitude: From hours down to minutes or even seconds. - -Functionally speaking, Docker offers two main services: +Docker is an application that can significantly reduce the time, effort and cost of deploying software. It can reduce the time needed to deploy an application by at least an order of magnitude. Functionally speaking, Docker offers two main services: - Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". diff --git a/README.md.backup b/README.md.backup index 4611e67..58831ed 100644 --- a/README.md.backup +++ b/README.md.backup @@ -25,7 +25,7 @@ Converting a Drupal website to Backdrop can take a fraction of the time and expe Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is an application that can significantly reduce the time, effort and cost of deploying software. In fact, reduces the time needed to install and configure an application by at least an order of magnitude: From hours down to minutes or even seconds. +Docker is an application that can significantly reduce the time, effort and cost of deploying software. It can reduce the time needed to deploy an application by at least an order of magnitude. Functionally speaking, Docker offers two main services: From f9667dba7802be26fa3a6ea4ca64de3652801ea7 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 11:12:33 +0800 Subject: [PATCH 07/36] Fixed some typos --- README.md | 6 +++--- README.md.backup | 6 ++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b4599fa..d54d414 100644 --- a/README.md +++ b/README.md @@ -72,9 +72,9 @@ Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/f The fastest and easiest way to "spin up" Backdrop in a Docker container is to: 1) Ensure Docker is installed - 2) Create directory to hold docker assets + 2) Create a directory to hold docker assets 3) Create a docker startup file that references a Backdrop Docker Image - 4) Launch docker so that it knows to process the recently created startup file + 4) Launch docker so that it knows to process the recently created docker startup file ## Step 1: Ensure Docker is Installed [Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) @@ -129,7 +129,7 @@ services: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' ``` -## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Startup File +## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Docker Startup File While in the `docker-eval` directory, enter the following command: ``` diff --git a/README.md.backup b/README.md.backup index 58831ed..559a55f 100644 --- a/README.md.backup +++ b/README.md.backup @@ -25,9 +25,7 @@ Converting a Drupal website to Backdrop can take a fraction of the time and expe Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is an application that can significantly reduce the time, effort and cost of deploying software. It can reduce the time needed to deploy an application by at least an order of magnitude. - -Functionally speaking, Docker offers two main services: +Docker is an application that can significantly reduce the time, effort and cost of deploying software. It can reduce the time needed to deploy an application by at least an order of magnitude. Functionally speaking, Docker offers two main services: - Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". @@ -74,7 +72,7 @@ Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/f The fastest and easiest way to "spin up" Backdrop in a Docker container is to: 1) Ensure Docker is installed - 2) Create directory to hold docker assets + 2) Create a directory to hold docker assets 3) Create a docker startup file that references a Backdrop Docker Image 4) Launch docker so that it knows to process the recently created startup file From a5a7398bcc7fae66f3653740afacc438d0f43675 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 11:13:26 +0800 Subject: [PATCH 08/36] Fixed some typos --- README.md | 2 +- README.md.backup | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d54d414..e15059e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This README file attempts to explain in plain language how to deploy Backdrop CM # What is Backdrop? -_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not abandoned.**_ +_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for: diff --git a/README.md.backup b/README.md.backup index 559a55f..d54d414 100644 --- a/README.md.backup +++ b/README.md.backup @@ -74,7 +74,7 @@ The fastest and easiest way to "spin up" Backdrop in a Docker container is to: 1) Ensure Docker is installed 2) Create a directory to hold docker assets 3) Create a docker startup file that references a Backdrop Docker Image - 4) Launch docker so that it knows to process the recently created startup file + 4) Launch docker so that it knows to process the recently created docker startup file ## Step 1: Ensure Docker is Installed [Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) @@ -129,7 +129,7 @@ services: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' ``` -## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Startup File +## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Docker Startup File While in the `docker-eval` directory, enter the following command: ``` From 4eec9622e18df1c5a2a6ed6af1f53bd47b0e8e25 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 12:18:24 +0800 Subject: [PATCH 09/36] Adjusted messaging of Compatibility section --- README.md | 10 +++++++--- README.md.backup | 12 ++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e15059e..5227a53 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,15 @@ Backdrop is a web application development framework frequenty deployed in the gu - Non-Governmental Organizations - Non-Profit Organizations +## Guiding Principles +Leading among the principles that help to guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" within Backdrop, an important and highly useful development in its evolution. + ## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with respect to updating the "legacy" and now "unsupported" Drupal-based websites. Today, more than 50% of all Drupal websites remain deployed on "legacy" and "unsupported" Drupal versions. +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with their Drpual-based websites as they quickly evolved from "legacy" to "unsupported" status. Today, more than 50% of all production Drupal websites are running on "unsupported" Drupal versions (5, 6, 7, 8, 9). In fact, "unsupported" versions currently comprise the **majority** of present-day Drupal installations, with Drupal 7 representing about 1/3 of the total. + -## Key Principles -Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code can run in Backdrop. This is especially true of Drupal 7, which still composes about 1/3 of all reported Drupal installations. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop, which was an important and highly useful development in the evolution of Backdrop. Another reason for Drupal 7 compatibility is a pragmatic one: The sheer size and scale of the extended Drupal ecosystem, which includes over 16,000+ individually contributed modules and themes. This massive amount of innovation resulted from over a decade of distributed development by thousands of developers, and resulted in over 150,000 individual pieces of freely available intellectual property assets that range across nearly every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. +## Compatibility +With only slight alterations, the vast majority of "unsupported" Drupal code is able to run in Backdrop. This is especially true for Drupal 7 code, as it was the base product that Backdrop was derived from, and the version for which a compatibility layer was written in Backdrop. Another reason for fostering a high degree of compatibility with Drupal 7 is pragmatic: The Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result is a collective body of work comprised of over 150,000 individual pieces of freely available intellectual property. These assets range across every conceivable organizational model and business problem...and all of them are accessible via Backdrop. ## Cost of Adoption Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. diff --git a/README.md.backup b/README.md.backup index d54d414..5227a53 100644 --- a/README.md.backup +++ b/README.md.backup @@ -2,7 +2,7 @@ This README file attempts to explain in plain language how to deploy Backdrop CM # What is Backdrop? -_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not abandoned.**_ +_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for: @@ -12,11 +12,15 @@ Backdrop is a web application development framework frequenty deployed in the gu - Non-Governmental Organizations - Non-Profit Organizations +## Guiding Principles +Leading among the principles that help to guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" within Backdrop, an important and highly useful development in its evolution. + ## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with respect to updating the "legacy" and now "unsupported" Drupal-based websites. Today, more than 50% of all Drupal websites remain deployed on "legacy" and "unsupported" Drupal versions. +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with their Drpual-based websites as they quickly evolved from "legacy" to "unsupported" status. Today, more than 50% of all production Drupal websites are running on "unsupported" Drupal versions (5, 6, 7, 8, 9). In fact, "unsupported" versions currently comprise the **majority** of present-day Drupal installations, with Drupal 7 representing about 1/3 of the total. + -## Key Principles -Among the key principles underpinning the Backdrop ethos are compatibility, reliability, predictability and managed complexity. With only the slightest of alterations, the vast majority of Drupal code can run in Backdrop. This is especially true of Drupal 7, which still composes about 1/3 of all reported Drupal installations. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop, which was an important and highly useful development in the evolution of Backdrop. Another reason for Drupal 7 compatibility is a pragmatic one: The sheer size and scale of the extended Drupal ecosystem, which includes over 16,000+ individually contributed modules and themes. This massive amount of innovation resulted from over a decade of distributed development by thousands of developers, and resulted in over 150,000 individual pieces of freely available intellectual property assets that range across nearly every conceivable organizational model and business challenge...and all of them are highly compatible with Backdrop. +## Compatibility +With only slight alterations, the vast majority of "unsupported" Drupal code is able to run in Backdrop. This is especially true for Drupal 7 code, as it was the base product that Backdrop was derived from, and the version for which a compatibility layer was written in Backdrop. Another reason for fostering a high degree of compatibility with Drupal 7 is pragmatic: The Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result is a collective body of work comprised of over 150,000 individual pieces of freely available intellectual property. These assets range across every conceivable organizational model and business problem...and all of them are accessible via Backdrop. ## Cost of Adoption Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. From 49bee3c671183d1ee32e9a3af096804413c259f6 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 12:19:38 +0800 Subject: [PATCH 10/36] Adjusted What is Backdrop section --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5227a53..a97b83d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This README file attempts to explain in plain language how to deploy Backdrop CM _**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ -Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for: +Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for use by: - Primary, Secondary and Tertiary Educational Institutions - National, Regional and Municipal Governments From 378800c77b18da2667155039c75fe3dcb44d68e9 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 12:30:21 +0800 Subject: [PATCH 11/36] README.md messaging tweaks --- README.md | 9 ++++++--- README.md.backup | 11 +++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a97b83d..b96bd43 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,17 @@ Backdrop is a web application development framework frequenty deployed in the gu - Non-Profit Organizations ## Guiding Principles -Leading among the principles that help to guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" within Backdrop, an important and highly useful development in its evolution. +Among the leading principles that guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. Other principles include humility, teamwork and dependability. ## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with their Drpual-based websites as they quickly evolved from "legacy" to "unsupported" status. Today, more than 50% of all production Drupal websites are running on "unsupported" Drupal versions (5, 6, 7, 8, 9). In fact, "unsupported" versions currently comprise the **majority** of present-day Drupal installations, with Drupal 7 representing about 1/3 of the total. +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of that event was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost into the wider Drupal community. Every subsequent Drupal release, until recently, has a similar impact, leaving stakeholders confused and unhappy about what they should do with their Drpual-based websites as they rapidly devolved from "legacy" to "unsupported" status in the eyes of Drupal. + +## Present Day Situation +Many production Drupal websites are currently deployed on an "unsupported" version of Drupal (5, 6, 7, 8, 9). In fact, "unsupported" websites currently comprise the **majority** of present-day Drupal deployments, with Drupal 7 representing over a third of the total number. ## Compatibility -With only slight alterations, the vast majority of "unsupported" Drupal code is able to run in Backdrop. This is especially true for Drupal 7 code, as it was the base product that Backdrop was derived from, and the version for which a compatibility layer was written in Backdrop. Another reason for fostering a high degree of compatibility with Drupal 7 is pragmatic: The Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result is a collective body of work comprised of over 150,000 individual pieces of freely available intellectual property. These assets range across every conceivable organizational model and business problem...and all of them are accessible via Backdrop. +The Backdrop leading principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop early on. This important and highly useful development has become a "secret weapon" for Backdrop because, with only slight alteration, the vast majority of "unsupported" Drupal code is able to run in a supported version of Backdrop. This is especially true for Drupal 7 code, as that was what Backdrop was derived from, and is the version of Drupal for which Backdrop offers the highest degree of compatibility. Another reason why Backdrop selected Drupal 7 as its basis was pragmatic: The Drupal 7 ecosystem is massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. ## Cost of Adoption Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. diff --git a/README.md.backup b/README.md.backup index 5227a53..b96bd43 100644 --- a/README.md.backup +++ b/README.md.backup @@ -4,7 +4,7 @@ This README file attempts to explain in plain language how to deploy Backdrop CM _**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ -Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for: +Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for use by: - Primary, Secondary and Tertiary Educational Institutions - National, Regional and Municipal Governments @@ -13,14 +13,17 @@ Backdrop is a web application development framework frequenty deployed in the gu - Non-Profit Organizations ## Guiding Principles -Leading among the principles that help to guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" within Backdrop, an important and highly useful development in its evolution. +Among the leading principles that guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. Other principles include humility, teamwork and dependability. ## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of the fork was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost. Every subsequent Drupal release, until recently, has a similar impact, leaving the Drupal community confused and unhappy about what to do with their Drpual-based websites as they quickly evolved from "legacy" to "unsupported" status. Today, more than 50% of all production Drupal websites are running on "unsupported" Drupal versions (5, 6, 7, 8, 9). In fact, "unsupported" versions currently comprise the **majority** of present-day Drupal installations, with Drupal 7 representing about 1/3 of the total. +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of that event was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost into the wider Drupal community. Every subsequent Drupal release, until recently, has a similar impact, leaving stakeholders confused and unhappy about what they should do with their Drpual-based websites as they rapidly devolved from "legacy" to "unsupported" status in the eyes of Drupal. + +## Present Day Situation +Many production Drupal websites are currently deployed on an "unsupported" version of Drupal (5, 6, 7, 8, 9). In fact, "unsupported" websites currently comprise the **majority** of present-day Drupal deployments, with Drupal 7 representing over a third of the total number. ## Compatibility -With only slight alterations, the vast majority of "unsupported" Drupal code is able to run in Backdrop. This is especially true for Drupal 7 code, as it was the base product that Backdrop was derived from, and the version for which a compatibility layer was written in Backdrop. Another reason for fostering a high degree of compatibility with Drupal 7 is pragmatic: The Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result is a collective body of work comprised of over 150,000 individual pieces of freely available intellectual property. These assets range across every conceivable organizational model and business problem...and all of them are accessible via Backdrop. +The Backdrop leading principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop early on. This important and highly useful development has become a "secret weapon" for Backdrop because, with only slight alteration, the vast majority of "unsupported" Drupal code is able to run in a supported version of Backdrop. This is especially true for Drupal 7 code, as that was what Backdrop was derived from, and is the version of Drupal for which Backdrop offers the highest degree of compatibility. Another reason why Backdrop selected Drupal 7 as its basis was pragmatic: The Drupal 7 ecosystem is massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. ## Cost of Adoption Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. From a2d3cd239cdea7e43fbb98b75eb1624112fe4f20 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 12:32:44 +0800 Subject: [PATCH 12/36] README.md messaging tweaks --- README.md | 2 +- README.md.backup | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b96bd43..8559b19 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Many production Drupal websites are currently deployed on an "unsupported" versi The Backdrop leading principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop early on. This important and highly useful development has become a "secret weapon" for Backdrop because, with only slight alteration, the vast majority of "unsupported" Drupal code is able to run in a supported version of Backdrop. This is especially true for Drupal 7 code, as that was what Backdrop was derived from, and is the version of Drupal for which Backdrop offers the highest degree of compatibility. Another reason why Backdrop selected Drupal 7 as its basis was pragmatic: The Drupal 7 ecosystem is massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. ## Cost of Adoption -Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. +Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have chosen Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way for them to move forward. ## Track Record Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. diff --git a/README.md.backup b/README.md.backup index b96bd43..434bab6 100644 --- a/README.md.backup +++ b/README.md.backup @@ -26,7 +26,7 @@ Many production Drupal websites are currently deployed on an "unsupported" versi The Backdrop leading principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop early on. This important and highly useful development has become a "secret weapon" for Backdrop because, with only slight alteration, the vast majority of "unsupported" Drupal code is able to run in a supported version of Backdrop. This is especially true for Drupal 7 code, as that was what Backdrop was derived from, and is the version of Drupal for which Backdrop offers the highest degree of compatibility. Another reason why Backdrop selected Drupal 7 as its basis was pragmatic: The Drupal 7 ecosystem is massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. ## Cost of Adoption -Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion can be faster and cheaper than upgrading to a more recent version of Drupal - mostly because of how complicated modern versions of Drupal have become. To date, hundreds of organizations have opted to move to Backdrop because they concluded that it was the fastest, easiest and least expensive way forward for their organization. +Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have opted to move over to Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way forward for their organization. ## Track Record Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. From 3c19f80fc3258a6ac074f577cf0958c94b1c0933 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 12:42:54 +0800 Subject: [PATCH 13/36] README.md messaging tweaks --- README.md | 3 ++- README.md.backup | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8559b19..de39043 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ Many production Drupal websites are currently deployed on an "unsupported" versi ## Compatibility -The Backdrop leading principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop early on. This important and highly useful development has become a "secret weapon" for Backdrop because, with only slight alteration, the vast majority of "unsupported" Drupal code is able to run in a supported version of Backdrop. This is especially true for Drupal 7 code, as that was what Backdrop was derived from, and is the version of Drupal for which Backdrop offers the highest degree of compatibility. Another reason why Backdrop selected Drupal 7 as its basis was pragmatic: The Drupal 7 ecosystem is massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. +The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop very early in its evolution. This highly useful Backdrop feature has become a bit of a "secret weapon" because "unsuppoted" Drupal code needs only to be slighty altered to then be hosted in a fully supported version of Backdrop. This is especially the case for "unsupported" Drupal 7 code, as that was the base product from which Backdrop was derived. The selection of Drupal 7 as the basis for Backdrop was no accident. When Backdrop was launched, Drupal 7 was the latest and most popular version of Drupal, with the best-developed ecosystem of contributed modules and themes. Today, over a decade later, the Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation has resulted from a distributed development model supported by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 on a daily basis. The result of ths collective effort is a body of work comprised of over 150,000 distinct pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. + ## Cost of Adoption Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have chosen Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way for them to move forward. diff --git a/README.md.backup b/README.md.backup index 434bab6..7956a3f 100644 --- a/README.md.backup +++ b/README.md.backup @@ -23,10 +23,14 @@ Many production Drupal websites are currently deployed on an "unsupported" versi ## Compatibility -The Backdrop leading principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop early on. This important and highly useful development has become a "secret weapon" for Backdrop because, with only slight alteration, the vast majority of "unsupported" Drupal code is able to run in a supported version of Backdrop. This is especially true for Drupal 7 code, as that was what Backdrop was derived from, and is the version of Drupal for which Backdrop offers the highest degree of compatibility. Another reason why Backdrop selected Drupal 7 as its basis was pragmatic: The Drupal 7 ecosystem is massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. +The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop very early in its evolution. This highly useful Backdrop feature has become a bit of a "secret weapon" because "unsuppoted" Drupal code needs only to be slighty altered to then be hosted in a fully supported version of Backdrop. This is especially the case for "unsupported" Drupal 7 code, as that was the base product from which Backdrop was derived. The selection of Drupal 7 as the basis for Backdrop was no accident. When Backdrop was launched, Drupal 7 was the latest and most popular version of Drupal, with the best-developed ecosystem of contributed modules and themes. Today, over a decade later, the Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. + + and therefore is the version that typically requires the least conversion effort to function correctly in Backdrop. + + ## Cost of Adoption -Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have opted to move over to Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way forward for their organization. +Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have chosen Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way for them to move forward. ## Track Record Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. From 0ddd821249a39a760d55c4fc9deef709458642fa Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 12:46:23 +0800 Subject: [PATCH 14/36] README.md messaging tweaks --- README.md | 4 +++- README.md.backup | 7 ++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index de39043..c561dad 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,9 @@ Converting a Drupal website to Backdrop can take a fraction of the time and expe Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is an application that can significantly reduce the time, effort and cost of deploying software. It can reduce the time needed to deploy an application by at least an order of magnitude. Functionally speaking, Docker offers two main services: +Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude (hours to minutes, minutes to seconds). + +Functionally speaking, Docker offers two main services: - Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". diff --git a/README.md.backup b/README.md.backup index 7956a3f..12ecf60 100644 --- a/README.md.backup +++ b/README.md.backup @@ -23,10 +23,7 @@ Many production Drupal websites are currently deployed on an "unsupported" versi ## Compatibility -The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop very early in its evolution. This highly useful Backdrop feature has become a bit of a "secret weapon" because "unsuppoted" Drupal code needs only to be slighty altered to then be hosted in a fully supported version of Backdrop. This is especially the case for "unsupported" Drupal 7 code, as that was the base product from which Backdrop was derived. The selection of Drupal 7 as the basis for Backdrop was no accident. When Backdrop was launched, Drupal 7 was the latest and most popular version of Drupal, with the best-developed ecosystem of contributed modules and themes. Today, over a decade later, the Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation was the result of over a decade of distributed development by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 for their everyday livelihood. The result of ths collective effort is a body of work comprised of over 150,000 individual pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. - - and therefore is the version that typically requires the least conversion effort to function correctly in Backdrop. - +The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop very early in its evolution. This highly useful Backdrop feature has become a bit of a "secret weapon" because "unsuppoted" Drupal code needs only to be slighty altered to then be hosted in a fully supported version of Backdrop. This is especially the case for "unsupported" Drupal 7 code, as that was the base product from which Backdrop was derived. The selection of Drupal 7 as the basis for Backdrop was no accident. When Backdrop was launched, Drupal 7 was the latest and most popular version of Drupal, with the best-developed ecosystem of contributed modules and themes. Today, over a decade later, the Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation has resulted from a distributed development model supported by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 on a daily basis. The result of ths collective effort is a body of work comprised of over 150,000 distinct pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. ## Cost of Adoption @@ -36,7 +33,7 @@ Converting a Drupal website to Backdrop can take a fraction of the time and expe Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is an application that can significantly reduce the time, effort and cost of deploying software. It can reduce the time needed to deploy an application by at least an order of magnitude. Functionally speaking, Docker offers two main services: +Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude. Functionally speaking, Docker offers two main services: - Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". From 1d8374e3b231598b4a54eb43b7904c8881a969ed Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 18:20:56 +0800 Subject: [PATCH 15/36] added to gitignore --- .gitignore | 3 ++- README.md.backup | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 0f09eb4..6fb3cfe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .*.swp -backdrop.tar.gz \ No newline at end of file +backdrop.tar.gz +*.backup \ No newline at end of file diff --git a/README.md.backup b/README.md.backup index 12ecf60..c561dad 100644 --- a/README.md.backup +++ b/README.md.backup @@ -33,7 +33,9 @@ Converting a Drupal website to Backdrop can take a fraction of the time and expe Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. # What is Docker? -Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude. Functionally speaking, Docker offers two main services: +Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude (hours to minutes, minutes to seconds). + +Functionally speaking, Docker offers two main services: - Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". From 6767acabb6decfdb3c9e49e13a33930fd77b34e3 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach <78756076+ProfessorGram@users.noreply.github.com> Date: Sat, 28 Dec 2024 18:21:58 +0800 Subject: [PATCH 16/36] Delete README.md.backup --- README.md.backup | 232 ----------------------------------------------- 1 file changed, 232 deletions(-) delete mode 100644 README.md.backup diff --git a/README.md.backup b/README.md.backup deleted file mode 100644 index c561dad..0000000 --- a/README.md.backup +++ /dev/null @@ -1,232 +0,0 @@ -This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. - -# What is Backdrop? - -_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ - -Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for use by: - -- Primary, Secondary and Tertiary Educational Institutions -- National, Regional and Municipal Governments -- Small & Medium Sized Enterprises -- Non-Governmental Organizations -- Non-Profit Organizations - -## Guiding Principles -Among the leading principles that guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. Other principles include humility, teamwork and dependability. - -## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of that event was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost into the wider Drupal community. Every subsequent Drupal release, until recently, has a similar impact, leaving stakeholders confused and unhappy about what they should do with their Drpual-based websites as they rapidly devolved from "legacy" to "unsupported" status in the eyes of Drupal. - -## Present Day Situation -Many production Drupal websites are currently deployed on an "unsupported" version of Drupal (5, 6, 7, 8, 9). In fact, "unsupported" websites currently comprise the **majority** of present-day Drupal deployments, with Drupal 7 representing over a third of the total number. - - -## Compatibility -The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop very early in its evolution. This highly useful Backdrop feature has become a bit of a "secret weapon" because "unsuppoted" Drupal code needs only to be slighty altered to then be hosted in a fully supported version of Backdrop. This is especially the case for "unsupported" Drupal 7 code, as that was the base product from which Backdrop was derived. The selection of Drupal 7 as the basis for Backdrop was no accident. When Backdrop was launched, Drupal 7 was the latest and most popular version of Drupal, with the best-developed ecosystem of contributed modules and themes. Today, over a decade later, the Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation has resulted from a distributed development model supported by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 on a daily basis. The result of ths collective effort is a body of work comprised of over 150,000 distinct pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. - - -## Cost of Adoption -Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have chosen Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way for them to move forward. - -## Track Record -Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. - -# What is Docker? -Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude (hours to minutes, minutes to seconds). - -Functionally speaking, Docker offers two main services: - -- Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". - -- Docker provides a **run** environment wherein a Docker Image may be loaded and launched, thereby making the target application within that image accessible. The short name for the Docker Runtime Environment is "container". - -## What is a Dockerfile? -A Dockerfile is a human-redable script containing all the commands Docker needs to alter a source Docker Image into a target Docker Image. There is no short name for a Dockerfile, they are simply referred to as a "Dockerfile". - -## What is a Docker Image? -A Docker Image ("image") is the result of a Docker build process. - -## What is a Backdrop Docker Official Image? - -A Backdrop Docker Official Image is a Docker image that exposes the functionality of a Backdrop CMS instance in a container. These images have been prepared by the Backdrop CMS Project Team in order to spread awareness about Backdrop CMS and to help people quickly and easily deploy Backdrop CMS for evaluation purposes. - -### What is a MAIN Docker Image? -The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker when an incomplete image specifier has been supplied. This capability was mostly developed for convenience, but it can also be thought of as a "catchall" or "fallback" strategy. It is also very useful when the latest version of an image is unknown as it will always install the preferred (and latest) version of an image unless instructed not to do so. - -### What is an ALTERNATE Docker Image? -**ALTERNATE** Docker images are a different story. These images must be fully specified if they are to be loaded and launched by Docker specifically _because_ they are not the prefered, latest image. Instead, they represent an exploration of "what if" scenarios with respect to Backdrop. Usually, this involves the incorporation of a different software sub-system, such as a different web server. Sometimes they represent a different version of the language that Backdrop was implemented in. Sometimes they represent a "snapshot" in the history of the development of Backdrop. In any event, accessing these images requires that they be fully and completely specified to Docker. - -[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) - -# Tags - -## Apache 2 (apache) - -[`latest`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`backdrop`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1.29.2-apache`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1.29.2`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1-apache`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) - -Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) - -## FastCGI Process Manager (fpm) -[`1.29.2-fpm`](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) -[`1-fpm`](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) - -Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) - -# Installation -The fastest and easiest way to "spin up" Backdrop in a Docker container is to: - - 1) Ensure Docker is installed - 2) Create a directory to hold docker assets - 3) Create a docker startup file that references a Backdrop Docker Image - 4) Launch docker so that it knows to process the recently created docker startup file - -## Step 1: Ensure Docker is Installed -[Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) - -## Step 2: Create a Directory to Hold Docker assets -Create a directory named `backdrop-eval` to hold any Backdrop-related Docker assets - -``` -md backdrop-eval - -cd backdrop-eval -``` - -## Step 3: Create a Docker Startup File that References a Backdrop Docker Image -In the `backdrop-eval` directory, create `compose.yml` file with the following contents: -``` - -services: - - backdrop: - - image: backdrop:latest - - name: backdrop - - ports: - - - 8088:80 - - environment: - - BACKDROP_DB_HOST: mysql - - BACKDROP_DB_USER: backdrop - - BACKDROP_DB_PASSWORD: backdrop - - mysql: - - image: mysql:latest - - name: mysql - - environment: - - MYSQL_USER: backdrop - - MYSQL_PASSWORD: backdrop - - MYSQL_DATABASE: backdrop - - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' -``` - -## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Docker Startup File -While in the `docker-eval` directory, enter the following command: - -``` -docker compose up -``` - -This command instructs docker to process the `compose.yml` file. The screen should immediately begin to fill with startup messages as docker composes the Backdrop runtime environment. After a minute or so, the pace of new messages should settle down, with just status messages being displayed. At this point the Backdrop installation screen should be accessible via a web browser. - -# How to Access Backdrop in a Local Docker Container -If the web browser is running on **the same machine** as docker, Backdrop should be accessible at: - -``` -http://localhost:8080 -``` - -# How to Access Backdrop in a Remote Docker Container -If the web browser is running on **a different machine** than the one running docker, Backdrop should be accessible at: - -``` -http://{host-ip}:8080 -``` - -_(where `{host-ip}` is the IP address of the machine running docker)_ - - -# Backdrop Installation - Database Credentials -Don't forget that the Backdrop install requires the following database credentials to proceed: - -``` -User: backdrop -Password: backdrop -Database: backdrop -``` - -# Validating Backdrop-Related Docker Containers -Validating that Docker indeed constructed a valid runtime environment for Backdrop may be accomplished with the following command: - -``` -docker ps -``` - -The resulting listing should include TWO (2) docker containers: - -- One for the MySQL database server that Backdrop requires (mysql) -- One for Backdrop itself (backdrop) - -``` -[example docker ps output here...] -``` - -## How to Access the Backdrop host -Accessing the Backdrop host can be accomplished by issuing the following command on the machine running Docker: - -``` -docker exec -it backdrop bash -``` - -## Trying Out the ALTERNATE Docker Images -The example `compose.yml` specifically references the `backdrop:latest` docker image. - -This is just in order to get people new to Docker started quickly and easily. Once someone becomes more familiar with Docker and using it to "spin up" containers, there is no reason why they wouldn't want to be curious about the **ALTERNATE** docker images, and wondering if one of those images suited their requirements better. - -To accomplish that, the only thing that needs be done is change the image specifier in the `backdrop` section of the `compose.yml` file. The general format to identify a specific Docker image is: - -``` -repository:image -``` - - -[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) - -# About Backdrop -![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Vertical_0.png) - -# License - -View [license information](https://www.drupal.org/licensing/faq) for the software contained in this image. - -# Feedback - -## Issue Queue(s) -- [Backdrop CMS Core Issue Queue](https://github.com/backdrop/backdrop-issues/issues) -- [Backdrop CMS Contrib at Github.com](https://github.com/backdrop-contrib) - Each contrib project has it's own issue queue. - -## Documentation -- [Backdrop CMS Documentation](https://docs.backdropcms.org/) - -## Contributing -- [Contribute to the Backdrop CMS Open Source Project](https://docs.backdropcms.org/documentation/contributors-guide) - From 333c084e12ff2b06757a680373133f9f3bcde579 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sat, 28 Dec 2024 18:24:46 +0800 Subject: [PATCH 17/36] Removed TAGS section (saved as fragment elsewhere) --- README.md | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/README.md b/README.md index c561dad..8eaae7d 100644 --- a/README.md +++ b/README.md @@ -59,24 +59,6 @@ The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker [Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) -# Tags - -## Apache 2 (apache) - -[`latest`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`backdrop`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1.29.2-apache`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1.29.2`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1-apache`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) -[`1`](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) - -Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/apache/Dockerfile) - -## FastCGI Process Manager (fpm) -[`1.29.2-fpm`](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) -[`1-fpm`](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) - -Source [*Dockerfile*](https://github.com/kalabox/backdrop-docker/blob/master/1/fpm/Dockerfile) # Installation The fastest and easiest way to "spin up" Backdrop in a Docker container is to: From 34b5e6f19fb923a0386249800c6c48dc4766a4a0 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 08:58:54 +0800 Subject: [PATCH 18/36] Added compose.yml --- compose.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 compose.yml diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..7ac9038 --- /dev/null +++ b/compose.yml @@ -0,0 +1,19 @@ +services: + backdrop: + image: backdrop:latest + container_name: backdrop + ports: + - 8088:80 + environment: + BACKDROP_DB_HOST: mysql + BACKDROP_DB_USER: backdrop + BACKDROP_DB_PASSWORD: backdrop + + mysql: + image: mysql + container_name: mysql + environment: + MYSQL_USER: backdrop + MYSQL_PASSWORD: backdrop + MYSQL_DATABASE: backdrop + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' From c80ad459678ff953b1cfb3417e854ed7398d6864 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach <78756076+ProfessorGram@users.noreply.github.com> Date: Sun, 29 Dec 2024 08:59:59 +0800 Subject: [PATCH 19/36] Delete docker-compose.yml New file name format for Docker is "compose.yml" not "docker-compose.yml" --- docker-compose.yml | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index ebf65a1..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - backdrop: - build: - context: ./1/apache - ports: - - 8088:80 - environment: - BACKDROP_DB_HOST: db - BACKDROP_DB_USER: backdrop - BACKDROP_DB_PASSWORD: backdrop - - db: - image: mysql - environment: - MYSQL_USER: backdrop - MYSQL_PASSWORD: backdrop - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - MYSQL_DATABASE: backdrop From ad9968f961ade219a987b1a5c23783e7f784c504 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:11:59 +0800 Subject: [PATCH 20/36] Added ToC to README --- README.md | 122 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 64 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 8eaae7d..c07025f 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,13 @@ -This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. +This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application, what Docker is (and how it works) and what Backdrop is. -# What is Backdrop? +# Table of Contents -_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ +[Installation](#-installation) +[About Docker](#-about-docker) +[About Backdrop](#-about-backdrop) -Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for use by: - -- Primary, Secondary and Tertiary Educational Institutions -- National, Regional and Municipal Governments -- Small & Medium Sized Enterprises -- Non-Governmental Organizations -- Non-Profit Organizations - -## Guiding Principles -Among the leading principles that guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. Other principles include humility, teamwork and dependability. - -## History -Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of that event was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost into the wider Drupal community. Every subsequent Drupal release, until recently, has a similar impact, leaving stakeholders confused and unhappy about what they should do with their Drpual-based websites as they rapidly devolved from "legacy" to "unsupported" status in the eyes of Drupal. - -## Present Day Situation -Many production Drupal websites are currently deployed on an "unsupported" version of Drupal (5, 6, 7, 8, 9). In fact, "unsupported" websites currently comprise the **majority** of present-day Drupal deployments, with Drupal 7 representing over a third of the total number. - - -## Compatibility -The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop very early in its evolution. This highly useful Backdrop feature has become a bit of a "secret weapon" because "unsuppoted" Drupal code needs only to be slighty altered to then be hosted in a fully supported version of Backdrop. This is especially the case for "unsupported" Drupal 7 code, as that was the base product from which Backdrop was derived. The selection of Drupal 7 as the basis for Backdrop was no accident. When Backdrop was launched, Drupal 7 was the latest and most popular version of Drupal, with the best-developed ecosystem of contributed modules and themes. Today, over a decade later, the Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation has resulted from a distributed development model supported by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 on a daily basis. The result of ths collective effort is a body of work comprised of over 150,000 distinct pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. - - -## Cost of Adoption -Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have chosen Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way for them to move forward. - -## Track Record -Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. - -# What is Docker? -Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude (hours to minutes, minutes to seconds). - -Functionally speaking, Docker offers two main services: - -- Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". - -- Docker provides a **run** environment wherein a Docker Image may be loaded and launched, thereby making the target application within that image accessible. The short name for the Docker Runtime Environment is "container". - -## What is a Dockerfile? -A Dockerfile is a human-redable script containing all the commands Docker needs to alter a source Docker Image into a target Docker Image. There is no short name for a Dockerfile, they are simply referred to as a "Dockerfile". - -## What is a Docker Image? -A Docker Image ("image") is the result of a Docker build process. - -## What is a Backdrop Docker Official Image? - -A Backdrop Docker Official Image is a Docker image that exposes the functionality of a Backdrop CMS instance in a container. These images have been prepared by the Backdrop CMS Project Team in order to spread awareness about Backdrop CMS and to help people quickly and easily deploy Backdrop CMS for evaluation purposes. - -### What is a MAIN Docker Image? -The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker when an incomplete image specifier has been supplied. This capability was mostly developed for convenience, but it can also be thought of as a "catchall" or "fallback" strategy. It is also very useful when the latest version of an image is unknown as it will always install the preferred (and latest) version of an image unless instructed not to do so. - -### What is an ALTERNATE Docker Image? -**ALTERNATE** Docker images are a different story. These images must be fully specified if they are to be loaded and launched by Docker specifically _because_ they are not the prefered, latest image. Instead, they represent an exploration of "what if" scenarios with respect to Backdrop. Usually, this involves the incorporation of a different software sub-system, such as a different web server. Sometimes they represent a different version of the language that Backdrop was implemented in. Sometimes they represent a "snapshot" in the history of the development of Backdrop. In any event, accessing these images requires that they be fully and completely specified to Docker. - -[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) + Later sections discuss what Docker is and how it works, as well as the Backdro project in general # Installation The fastest and easiest way to "spin up" Backdrop in a Docker container is to: @@ -193,9 +142,66 @@ repository:image [Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) -# About Backdrop +# What is Docker? +Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude (hours to minutes, minutes to seconds). + +Functionally speaking, Docker offers two main services: + +- Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". + +- Docker provides a **run** environment wherein a Docker Image may be loaded and launched, thereby making the target application within that image accessible. The short name for the Docker Runtime Environment is "container". + +## What is a Dockerfile? +A Dockerfile is a human-redable script containing all the commands Docker needs to alter a source Docker Image into a target Docker Image. There is no short name for a Dockerfile, they are simply referred to as a "Dockerfile". + +## What is a Docker Image? +A Docker Image ("image") is the result of a Docker build process. + +## What is a Backdrop Docker Official Image? + +A Backdrop Docker Official Image is a Docker image that exposes the functionality of a Backdrop CMS instance in a container. These images have been prepared by the Backdrop CMS Project Team in order to spread awareness about Backdrop CMS and to help people quickly and easily deploy Backdrop CMS for evaluation purposes. + +### What is a MAIN Docker Image? +The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker when an incomplete image specifier has been supplied. This capability was mostly developed for convenience, but it can also be thought of as a "catchall" or "fallback" strategy. It is also very useful when the latest version of an image is unknown as it will always install the preferred (and latest) version of an image unless instructed not to do so. + +### What is an ALTERNATE Docker Image? +**ALTERNATE** Docker images are a different story. These images must be fully specified if they are to be loaded and launched by Docker specifically _because_ they are not the prefered, latest image. Instead, they represent an exploration of "what if" scenarios with respect to Backdrop. Usually, this involves the incorporation of a different software sub-system, such as a different web server. Sometimes they represent a different version of the language that Backdrop was implemented in. Sometimes they represent a "snapshot" in the history of the development of Backdrop. In any event, accessing these images requires that they be fully and completely specified to Docker. + +[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) + ![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Vertical_0.png) +# About Backdrop + +_**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ + +Backdrop is a web application development framework frequenty deployed in the guise of a Content Management System (or "website") for use by: + +- Primary, Secondary and Tertiary Educational Institutions +- National, Regional and Municipal Governments +- Small & Medium Sized Enterprises +- Non-Governmental Organizations +- Non-Profit Organizations + +## Guiding Principles +Among the leading principles that guide the Backdrop ethos are compatibility, reliability, predictability and managed complexity. Other principles include humility, teamwork and dependability. + +## History +Backdrop started off as a "fork" of the immensely popular Drupal 7 Content Management System. The genesis of that event was the release of Drupal 8, which introduced an explosion of uncertainty, complexity and cost into the wider Drupal community. Every subsequent Drupal release, until recently, has a similar impact, leaving stakeholders confused and unhappy about what they should do with their Drpual-based websites as they rapidly devolved from "legacy" to "unsupported" status in the eyes of Drupal. + +## Present Day Situation +Many production Drupal websites are currently deployed on an "unsupported" version of Drupal (5, 6, 7, 8, 9). In fact, "unsupported" websites currently comprise the **majority** of present-day Drupal deployments, with Drupal 7 representing over a third of the total number. + + +## Compatibility +The Backdrop principle of compatibility resulted in the creation of a "Drupal compatibility layer" in Backdrop very early in its evolution. This highly useful Backdrop feature has become a bit of a "secret weapon" because "unsuppoted" Drupal code needs only to be slighty altered to then be hosted in a fully supported version of Backdrop. This is especially the case for "unsupported" Drupal 7 code, as that was the base product from which Backdrop was derived. The selection of Drupal 7 as the basis for Backdrop was no accident. When Backdrop was launched, Drupal 7 was the latest and most popular version of Drupal, with the best-developed ecosystem of contributed modules and themes. Today, over a decade later, the Drupal 7 ecosystem is simply massive, with over 16,000 contributed modules and themes. This staggering amount of innovation has resulted from a distributed development model supported by thousands of dedicated and loyal developers, agencies and companies that relied on Drupal 7 on a daily basis. The result of ths collective effort is a body of work comprised of over 150,000 distinct pieces of freely available intellectual property that range across every conceivable organizational model and business problem...and all of them are available to Backdrop. + +## Cost of Adoption +Converting a Drupal website to Backdrop can take a fraction of the time and expense required to migrate to other CMS systems (Wordpress, Magento) or to move onto a cloud-based solution (WIX or Shopify). Most notably, a Drupal to Backdrop conversion is often faster and cheaper than a Drupal to Drupal upgrade - mostly due to how complicated more recent versions of Drupal have become. To date, hundreds of organizations have chosen Backdrop because they have concluded that Backdrop is the fastest, easiest and least expensive way for them to move forward. + +## Track Record +Since 2013, Backdrop has remained true to its key principles. Today, the Backdrop story is marked by a series of increasingly significant achievements. Backdrop has always been continually improved, and keeps up to date with the latest developments in web technology and approaches, including DLT and AI. Backdrop is upgraded in a predictable and methodical way, with planned updates occurring every six months. Major releases of Backdrop have been (and will be) supported for an extremely long time. New Backdrop functionality is arriving ever more frequently as more and more Drupal modules are converted. Finally, Backdrop has a proven, dedicated, mature, experienced and highly professional project team. + # License View [license information](https://www.drupal.org/licensing/faq) for the software contained in this image. From 0ad0557f513dbcd2ae6ae85fd15efa1978772491 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:13:07 +0800 Subject: [PATCH 21/36] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c07025f..5a163b0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application, what Docker is (and how it works) and what Backdrop is. +This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. Later sections explain what Docker is (and how it works) and also what Backdrop is. # Table of Contents From 291ea166ee338d9658e93997d9f881b4fc71dde2 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:14:08 +0800 Subject: [PATCH 22/36] Updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5a163b0..6cc76b8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -This README file attempts to explain in plain language how to deploy Backdrop CMS as a Docker container application. Later sections explain what Docker is (and how it works) and also what Backdrop is. +This README file attempts to explain in plain language how to deploy Backdrop CMS in a Docker container. Further sections explore what Docker is (and how it works) and also what Backdrop is. # Table of Contents From 689e7832e23a76c1d162a40ba000da061d6b57fa Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:17:05 +0800 Subject: [PATCH 23/36] Updated README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6cc76b8..6b9b001 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -This README file attempts to explain in plain language how to deploy Backdrop CMS in a Docker container. Further sections explore what Docker is (and how it works) and also what Backdrop is. +This README explains in plain language how to deploy Backdrop CMS inside a Docker container. Later sections explore what Docker is and what Backdrop is. # Table of Contents -[Installation](#-installation) -[About Docker](#-about-docker) -[About Backdrop](#-about-backdrop) +1. [Installation](#installation) +2. [About Docker](#about-docker) +3. [About Backdrop](#about-backdrop) Later sections discuss what Docker is and how it works, as well as the Backdro project in general From 58c0d260fdbedb7bf0a13dc8acc588f119fa669b Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:18:32 +0800 Subject: [PATCH 24/36] Updated README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6b9b001..3150f2b 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ This README explains in plain language how to deploy Backdrop CMS inside a Docke # Table of Contents 1. [Installation](#installation) -2. [About Docker](#about-docker) -3. [About Backdrop](#about-backdrop) +2. [What is Docker?](#what-is-docker?) +3. [What is Backdrop?](#what-is-backdrop?) Later sections discuss what Docker is and how it works, as well as the Backdro project in general @@ -171,7 +171,7 @@ The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker ![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Vertical_0.png) -# About Backdrop +# What is Backdrop? _**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ From 7fb145de3d1a7ce2f179aa41ac6a0818a9ac4841 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:24:07 +0800 Subject: [PATCH 25/36] Updated logos in README --- README.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3150f2b..2def516 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ This README explains in plain language how to deploy Backdrop CMS inside a Docke # Table of Contents 1. [Installation](#installation) -2. [What is Docker?](#what-is-docker?) -3. [What is Backdrop?](#what-is-backdrop?) +2. [About Docker](#about-docker) +3. [About Backdrop?](#about-backdrop) Later sections discuss what Docker is and how it works, as well as the Backdro project in general @@ -142,7 +142,11 @@ repository:image [Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) -# What is Docker? +# About Docker + +![logo](https://raw.githubusercontent.com/docker-library/docs/c350af05d3fac7b5c3f6327ac82fe4d990d8729c/docker/logo.png) + +## What is Docker? Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude (hours to minutes, minutes to seconds). Functionally speaking, Docker offers two main services: @@ -169,9 +173,10 @@ The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker [Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) -![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Vertical_0.png) +# About Backdrop +![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Horizontal_0.png) -# What is Backdrop? +## What is Backdrop? _**TL;DR: Backdrop is an exciting and promising way forward for organizations seeking a means of leaving legacy Drupal behind in such a way that existing investments in Drupal-related time, energy, people and money are not wasted or abandoned.**_ From 45b7ff82b5802b759d6358d1e610589f4b8f9866 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:24:57 +0800 Subject: [PATCH 26/36] Removed typo in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2def516..248fbe3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This README explains in plain language how to deploy Backdrop CMS inside a Docke 1. [Installation](#installation) 2. [About Docker](#about-docker) -3. [About Backdrop?](#about-backdrop) +3. [About Backdrop](#about-backdrop) Later sections discuss what Docker is and how it works, as well as the Backdro project in general From ef824d6060c8f5ffc1013abbe59ae098fe6d2d9f Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:27:47 +0800 Subject: [PATCH 27/36] Re-wrote initial section --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 248fbe3..a6a3e36 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -This README explains in plain language how to deploy Backdrop CMS inside a Docker container. Later sections explore what Docker is and what Backdrop is. +This README explains in plain language how to deploy Backdrop CMS inside a Docker container. + +Later sections of this document explore what Docker is and also what Backdrop is. # Table of Contents From 2a9e309361564cb1176f5b8bf0a3f5637f941fb6 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:28:24 +0800 Subject: [PATCH 28/36] Removed extra text --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index a6a3e36..82c482c 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,6 @@ Later sections of this document explore what Docker is and also what Backdrop is 2. [About Docker](#about-docker) 3. [About Backdrop](#about-backdrop) - - Later sections discuss what Docker is and how it works, as well as the Backdro project in general - # Installation The fastest and easiest way to "spin up" Backdrop in a Docker container is to: From 9af5637028b8f8d40706cdfbecf4f385b30a3af3 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:40:12 +0800 Subject: [PATCH 29/36] changed compose.yml to fix container_name reference --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 82c482c..ee1cbdf 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ services: image: backdrop:latest - name: backdrop + container_name: backdrop ports: @@ -56,7 +56,7 @@ services: image: mysql:latest - name: mysql + container_name: mysql environment: From 6e8672cc4b772faf72401e020facc92e5d60c827 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:41:05 +0800 Subject: [PATCH 30/36] added :latest to mysql image --- compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yml b/compose.yml index 7ac9038..0bd83c1 100644 --- a/compose.yml +++ b/compose.yml @@ -10,7 +10,7 @@ services: BACKDROP_DB_PASSWORD: backdrop mysql: - image: mysql + image: mysql:latest container_name: mysql environment: MYSQL_USER: backdrop From 96843b92cbf268feba844aeb8bbd1dbb8813cb22 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 09:48:03 +0800 Subject: [PATCH 31/36] updates to README --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index ee1cbdf..94c4ded 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -This README explains in plain language how to deploy Backdrop CMS inside a Docker container. +This document explains how to deploy Backdrop CMS as a Docker container application. -Later sections of this document explore what Docker is and also what Backdrop is. +Later sections discuss what Docker is and what Backdrop is. # Table of Contents @@ -9,17 +9,17 @@ Later sections of this document explore what Docker is and also what Backdrop is 3. [About Backdrop](#about-backdrop) # Installation -The fastest and easiest way to "spin up" Backdrop in a Docker container is to: +The process of "spinning up" Backdrop as a Docker container application includes: - 1) Ensure Docker is installed - 2) Create a directory to hold docker assets - 3) Create a docker startup file that references a Backdrop Docker Image - 4) Launch docker so that it knows to process the recently created docker startup file + 1) Ensuring Docker is installed + 2) Creating a directory to hold docker related assets + 3) Creating a new docker startup file referencing a Backdrop Docker Image + 4) Launching docker in such a way that it processes the new docker startup file ## Step 1: Ensure Docker is Installed [Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) -## Step 2: Create a Directory to Hold Docker assets +## Step 2: Create a Directory to Hold Docker Related Assets Create a directory named `backdrop-eval` to hold any Backdrop-related Docker assets ``` @@ -28,8 +28,8 @@ md backdrop-eval cd backdrop-eval ``` -## Step 3: Create a Docker Startup File that References a Backdrop Docker Image -In the `backdrop-eval` directory, create `compose.yml` file with the following contents: +## Step 3: Create a New Docker Startup File Referencing a Backdrop Docker Image +In the `backdrop-eval` directory, ensure that a `compose.yml` file exists, with the following contents: ``` services: @@ -69,7 +69,7 @@ services: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' ``` -## Step 4: Launch docker in Such a Way That it Knows to Processes the Recently Created Docker Startup File +## Step 4: Launch docker in Such a Way That it Processes the New Docker Startup File While in the `docker-eval` directory, enter the following command: ``` @@ -96,7 +96,7 @@ _(where `{host-ip}` is the IP address of the machine running docker)_ # Backdrop Installation - Database Credentials -Don't forget that the Backdrop install requires the following database credentials to proceed: +Don't forget that the Backdrop install process requires the following database credentials to move onward: ``` User: backdrop From 2eeab27151e8b958e8f8eae0da33a16b5b5cac6f Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 15:57:07 +0800 Subject: [PATCH 32/36] updated README.md file --- README.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 94c4ded..0ef036c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -This document explains how to deploy Backdrop CMS as a Docker container application. - -Later sections discuss what Docker is and what Backdrop is. - # Table of Contents 1. [Installation](#installation) @@ -9,27 +5,37 @@ Later sections discuss what Docker is and what Backdrop is. 3. [About Backdrop](#about-backdrop) # Installation -The process of "spinning up" Backdrop as a Docker container application includes: +This document explains how to deploy Backdrop CMS as a Docker container application. The process of "spinning up" Backdrop as a Docker container application involves: - 1) Ensuring Docker is installed - 2) Creating a directory to hold docker related assets + 1) Ensuring Docker is installed on the host machine + 2) Creating a named directory to hold Docker configuration file(s) 3) Creating a new docker startup file referencing a Backdrop Docker Image 4) Launching docker in such a way that it processes the new docker startup file -## Step 1: Ensure Docker is Installed +## Step 1: Ensure Docker is Installed on the Host Machine [Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) -## Step 2: Create a Directory to Hold Docker Related Assets -Create a directory named `backdrop-eval` to hold any Backdrop-related Docker assets +The following example checks for the existence of Docker on a Linux host: + +``` +docker -v +Docker version 27.4.1, build b9d17ea +``` + +## Step 2: Create a Named Directory to Hold Docker Configuration File(s) +The following example creates a directory named `backdrop-eval` for the purpose of holding Docker configuration file(s) on a Linux host ``` -md backdrop-eval +md /var/www/backdrop-eval -cd backdrop-eval +cd /var/www/backdrop-eval ``` ## Step 3: Create a New Docker Startup File Referencing a Backdrop Docker Image -In the `backdrop-eval` directory, ensure that a `compose.yml` file exists, with the following contents: +Docker usually requires configuration information to be able to successfully "spin up" an image. This is especially true in the case of Backdrop, because **two** containers are involved; MySQl and Backdrop. Backdrop requires the availability of a MySQL server in order to work. Docker accommodates this somewhat complicated situation by way of the `compose.yml` file, which contains all of the custom settings needed to help Docker set up the two containers, and get them to interoperate. + +The following example `/var/www/backdrop-eval/compose.yml` file ensures that the Backdrop Docker image launches correctly: + ``` services: From 6cb6dc63f71e45a817be720f172f7dee876b3777 Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 15:58:03 +0800 Subject: [PATCH 33/36] updated README.md file --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ef036c..2c352d5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ 3. [About Backdrop](#about-backdrop) # Installation -This document explains how to deploy Backdrop CMS as a Docker container application. The process of "spinning up" Backdrop as a Docker container application involves: +This document explains how to deploy Backdrop CMS as a Docker container application. + +The process of "spinning up" Backdrop as a Docker container application involves: 1) Ensuring Docker is installed on the host machine 2) Creating a named directory to hold Docker configuration file(s) From 3fe46d89b8479165129480f2b9ea67409ed20deb Mon Sep 17 00:00:00 2001 From: Professor Graham Leach Date: Sun, 29 Dec 2024 15:59:19 +0800 Subject: [PATCH 34/36] updated README.md file --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c352d5..2a19ac2 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,9 @@ While in the `docker-eval` directory, enter the following command: docker compose up ``` -This command instructs docker to process the `compose.yml` file. The screen should immediately begin to fill with startup messages as docker composes the Backdrop runtime environment. After a minute or so, the pace of new messages should settle down, with just status messages being displayed. At this point the Backdrop installation screen should be accessible via a web browser. +This command instructs docker to process the `compose.yml` file in the current directory. + +The screen should immediately begin to fill with startup messages as docker composes the Backdrop runtime environment. After a minute or so, the pace of new messages should settle down, with just status messages being displayed. At this point the Backdrop installation screen should be accessible via a web browser. # How to Access Backdrop in a Local Docker Container If the web browser is running on **the same machine** as docker, Backdrop should be accessible at: From 76408bf7ef772f87e07b87231d887160d23f75f2 Mon Sep 17 00:00:00 2001 From: Orwa Diraneyya <107997002+diraneyya@users.noreply.github.com> Date: Fri, 3 Jan 2025 14:46:20 +0100 Subject: [PATCH 35/36] Update README.md added various improvements. --- README.md | 130 +++++++++++++++++++++++++++--------------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index 2a19ac2..f3d8f5d 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ The process of "spinning up" Backdrop as a Docker container application involves 1) Ensuring Docker is installed on the host machine 2) Creating a named directory to hold Docker configuration file(s) - 3) Creating a new docker startup file referencing a Backdrop Docker Image - 4) Launching docker in such a way that it processes the new docker startup file + 3) Creating a new Docker startup file (also called: a _Docker Compose_ file) referencing a Backdrop Docker Image + 4) Launching Docker in such a way that it processes the new Docker startup file (using the command `docker compose`) -## Step 1: Ensure Docker is Installed on the Host Machine +## Step 1: Ensure Docker is Installed on the Host Machine [Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) The following example checks for the existence of Docker on a Linux host: @@ -24,88 +24,71 @@ docker -v Docker version 27.4.1, build b9d17ea ``` -## Step 2: Create a Named Directory to Hold Docker Configuration File(s) -The following example creates a directory named `backdrop-eval` for the purpose of holding Docker configuration file(s) on a Linux host +## Step 2: Create a Named Directory to Hold Docker Configuration File(s) -``` -md /var/www/backdrop-eval +The following example creates a directory named `backdrop-eval` for the purpose of holding Docker configuration file(s) on a Linux host (the folder is created inside of the current directory which could be the home of the logged-in user or another directory within it). -cd /var/www/backdrop-eval +``` +mkdir backdrop-eval +cd backdrop-eval ``` -## Step 3: Create a New Docker Startup File Referencing a Backdrop Docker Image -Docker usually requires configuration information to be able to successfully "spin up" an image. This is especially true in the case of Backdrop, because **two** containers are involved; MySQl and Backdrop. Backdrop requires the availability of a MySQL server in order to work. Docker accommodates this somewhat complicated situation by way of the `compose.yml` file, which contains all of the custom settings needed to help Docker set up the two containers, and get them to interoperate. +## Step 3: Create a New Docker Startup (i.e. _Docker compose_) File Referencing a Backdrop Docker Image +Docker offers a way to launch docker images that need to work together as an application. Such files are called _Docker compose_ files and are usually used when more than one Docker image is needed by the application. In the case of Backdrop, it is not sufficient to run the Backdrop Docker image which contains an Apache PHP application. Additionally, a MySQL database server is also needed. Hence, to "spin up" the Backdrop application (which involves running these two images), a Docker compose file is conveniently used. -The following example `/var/www/backdrop-eval/compose.yml` file ensures that the Backdrop Docker image launches correctly: +This is the `compose.yml` file, which contains all the settings needed to help Docker set up ad run the two containers, in a manner that allows them to interoperate as an application. -``` +The following example `compose.yml` file (located in the named directory created in Step 2) will conveniently _orchestrate_ the launch of the Backdrop and the MySQL Docker images: +``` services: - backdrop: - image: backdrop:latest - container_name: backdrop - ports: - - 8088:80 - environment: - BACKDROP_DB_HOST: mysql - BACKDROP_DB_USER: backdrop - BACKDROP_DB_PASSWORD: backdrop mysql: - image: mysql:latest - container_name: mysql - environment: - MYSQL_USER: backdrop - MYSQL_PASSWORD: backdrop - MYSQL_DATABASE: backdrop - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' ``` +> [!NOTE] +> The Docker compose file above is a bare minimum for testing Backdrop locally. In the case of running Backdrop on a server using Docker, which is often described as "production", the file will likely need to be modified. The modifications involved are beyond the scope of this README file. + ## Step 4: Launch docker in Such a Way That it Processes the New Docker Startup File + While in the `docker-eval` directory, enter the following command: ``` docker compose up ``` -This command instructs docker to process the `compose.yml` file in the current directory. +This command instructs Docker to process the `compose.yml` startup file located in the same directory. -The screen should immediately begin to fill with startup messages as docker composes the Backdrop runtime environment. After a minute or so, the pace of new messages should settle down, with just status messages being displayed. At this point the Backdrop installation screen should be accessible via a web browser. +The screen should immediately begin to fill with startup messages as docker processes the compose file and launches the service Docker images referenced within it. After a minute or so, the pace of new messages should settle down, with just status messages being displayed (which are preceded by `backdrop` or `mysql`, referring to the service from which the status message is being emitted). At this point, the Backdrop installation screen should be accessible via a web browser. -# How to Access Backdrop in a Local Docker Container -If the web browser is running on **the same machine** as docker, Backdrop should be accessible at: +## Next Steps/Troubleshooting -``` -http://localhost:8080 -``` +### How to Access Backdrop in a Local Docker Container -# How to Access Backdrop in a Remote Docker Container -If the web browser is running on **a different machine** than the one running docker, Backdrop should be accessible at: +If the web browser is running on **the same machine** as Docker, the Backdrop installation screen should be accessible at http://localhost:8088 -``` -http://{host-ip}:8080 -``` +### How to Access Backdrop in a Remote Docker Container -_(where `{host-ip}` is the IP address of the machine running docker)_ +If the web browser is running on **a different machine** than the one running docker, Backdrop should be accessible at http://{host-ip}:8088 (where `{host-ip}` is the IP address of the machine running Docker). +### Backdrop Installation - Database Credentials -# Backdrop Installation - Database Credentials Don't forget that the Backdrop install process requires the following database credentials to move onward: ``` @@ -114,73 +97,90 @@ Password: backdrop Database: backdrop ``` -# Validating Backdrop-Related Docker Containers +### Validating Backdrop-Related Docker Containers + Validating that Docker indeed constructed a valid runtime environment for Backdrop may be accomplished with the following command: ``` docker ps ``` -The resulting listing should include TWO (2) docker containers: +The resulting listing should include two Docker containers: - One for the MySQL database server that Backdrop requires (mysql) - One for Backdrop itself (backdrop) -``` -[example docker ps output here...] -``` +### How to Access the Backdrop host -## How to Access the Backdrop host Accessing the Backdrop host can be accomplished by issuing the following command on the machine running Docker: ``` docker exec -it backdrop bash ``` -## Trying Out the ALTERNATE Docker Images -The example `compose.yml` specifically references the `backdrop:latest` docker image. +This will result in creating a shell session _inside_ the container. To confirm this, try to browse the root of the filesystem and notice how it is different from your local root fileysytem: +``` +ls / +``` + +### Trying Out Other Docker Images -This is just in order to get people new to Docker started quickly and easily. Once someone becomes more familiar with Docker and using it to "spin up" containers, there is no reason why they wouldn't want to be curious about the **ALTERNATE** docker images, and wondering if one of those images suited their requirements better. +The example `compose.yml` above specifically references the `backdrop` Docker image. + +This is just in order to get people new to Docker quickly and easily started. Once someone becomes more familiar with Docker and how it is used to "spin up" the Backdrop application, there is no reason why they wouldn't want to try other Backdrop Docker images on Docker Hub or specific versions of the same image (using the [available tags](https://hub.docker.com/_/backdrop/tags)). To accomplish that, the only thing that needs be done is change the image specifier in the `backdrop` section of the `compose.yml` file. The general format to identify a specific Docker image is: ``` -repository:image +services: + backdrop: + image: {repository}/{image}:{tag} ``` +The image specifier is made up of 3 parts: a `{repository}`, `{image}` and `{tag}`. When `{repository}` is omitted, the format becomes `{image}:{tag}`. When the `{tag}` is omitted, this simply becomes `{image}`. -[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) +> [!NOTE] +> The `{repository}` part above is omitted when the source of the image is [Docker Hub](https://hub.docker.com/). The `{tag}` is omitted when the tag desired is "latest". + +[Click here to see a list of available Backdrop Official-Docker-Image tags](https://hub.docker.com/_/backdrop/tags) # About Docker ![logo](https://raw.githubusercontent.com/docker-library/docs/c350af05d3fac7b5c3f6327ac82fe4d990d8729c/docker/logo.png) ## What is Docker? -Docker is an application that can significantly reduce the time, effort and cost involved when deploying software. It can dramatically reduce deployment time, often by an order of magnitude (hours to minutes, minutes to seconds). -Functionally speaking, Docker offers two main services: +Docker started off as a way to create "portable" linux applications, ones that can run on any OS as long as it has a Linux kernel. + +A good way to start to understand Docker is by learning about `chroot` and how it allowed us to fool the application we are running under Linux into thinking that the current folder holds the entirety of the root filesystem. Docker was born out of the desire to offer complete isolation for the running process from the current OS, not only in storage (as `chroot` accomplished), but also in device/process/user/network spaces. This involved leveraging other features of the Linux kernel similar to `chroot` to achive all of these types of isolation. Today, Docker offers a way to run processes along with their depedencies, all packaged together and while only requiring a Linux kernel. -- Docker provides a **build** environment that utilizes a Dockerfile to produce a Docker Image containing everything a target application might need to run. The short name for a Docker Image is simply "image". +_Functionally and practically speaking, Docker offers two main services:_ -- Docker provides a **run** environment wherein a Docker Image may be loaded and launched, thereby making the target application within that image accessible. The short name for the Docker Runtime Environment is "container". +- Docker provides a way to **build and run** portable applications. A Docker image is the portable application's executable and a Docker container is the portable application's running instance. These two concepts are simply referred to as _images_ and _containers_ in Docker. + +- Docker provides a way to **orchestrate** the building and running of multiple images/containers in tandem. This feature has been traditionally packaged as a separate tool called `docker-compose` but is now included with Docker itself, which is invoked using the subcommand `docker compose` and relies on the [Docker Compose file](https://github.com/compose-spec/compose-spec) syntax. ## What is a Dockerfile? -A Dockerfile is a human-redable script containing all the commands Docker needs to alter a source Docker Image into a target Docker Image. There is no short name for a Dockerfile, they are simply referred to as a "Dockerfile". + +A Dockerfile is a human-redable build script for building Docker images. The image is built using the `docker build` or `docker buildx build` commands. There is no short name for a Dockerfile, they are simply referred to as a "Dockerfile". ## What is a Docker Image? -A Docker Image ("image") is the result of a Docker build process. + +A Docker Image (or simply an "image") is the result of a Docker build process. It can be uploaded to Docker Hub or other registries and shared with others this way. ## What is a Backdrop Docker Official Image? -A Backdrop Docker Official Image is a Docker image that exposes the functionality of a Backdrop CMS instance in a container. These images have been prepared by the Backdrop CMS Project Team in order to spread awareness about Backdrop CMS and to help people quickly and easily deploy Backdrop CMS for evaluation purposes. +A Backdrop Docker Official Image is a Docker image that is understood to be issued and maintained by the people behind Backdrop iteself, rather than being developed by members of the community (since everyone can build and upload Docker images to Docker Hub). These images have been prepared by the Backdrop CMS Project Team in order to spread awareness about Backdrop CMS and to help people quickly and easily deploy Backdrop CMS for evaluation purposes. + +### What is a Default Docker Image? + +The default Docker image is the one that is installed by default by Docker when an incomplete image specifier is supplied (i.e. omitting the "tag" part). This capability was mostly developed for convenience, but it can also be thought of as a "catchall" or "fallback" strategy. This is usually the image with the tag "latest". -### What is a MAIN Docker Image? -The **MAIN** Docker image is the one that is installed by **DEFAULT** by Docker when an incomplete image specifier has been supplied. This capability was mostly developed for convenience, but it can also be thought of as a "catchall" or "fallback" strategy. It is also very useful when the latest version of an image is unknown as it will always install the preferred (and latest) version of an image unless instructed not to do so. +### What Other Docker Images are There? -### What is an ALTERNATE Docker Image? -**ALTERNATE** Docker images are a different story. These images must be fully specified if they are to be loaded and launched by Docker specifically _because_ they are not the prefered, latest image. Instead, they represent an exploration of "what if" scenarios with respect to Backdrop. Usually, this involves the incorporation of a different software sub-system, such as a different web server. Sometimes they represent a different version of the language that Backdrop was implemented in. Sometimes they represent a "snapshot" in the history of the development of Backdrop. In any event, accessing these images requires that they be fully and completely specified to Docker. +Alternative to the default Docker image, Backdrop and other projects may offer tagged images for specific versions, or alternative configurations (for example, Backdrop offers two varieties of images depending on the underlying web server). -[Click here to see a complete list of every available Backdrop Official Docker Image](https://hub.docker.com/_/backdrop/tags) +[Click here to see a complete list of available Backdrop Official Docker Image tags](https://hub.docker.com/_/backdrop/tags) # About Backdrop ![logo](https://backdropcms.org/files/inline-images/Backdrop-Logo-Horizontal_0.png) From ae8babb675451fdee6b564d76644b86e602cadcf Mon Sep 17 00:00:00 2001 From: Orwa Diraneyya <107997002+diraneyya@users.noreply.github.com> Date: Fri, 3 Jan 2025 17:03:12 +0100 Subject: [PATCH 36/36] Update README.md added a section on building own images --- README.md | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index f3d8f5d..a96f817 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,25 @@ # Table of Contents -1. [Installation](#installation) +1. [Launch Backdrop using Docker](#launch-backdrop-using-docker) 2. [About Docker](#about-docker) 3. [About Backdrop](#about-backdrop) -# Installation -This document explains how to deploy Backdrop CMS as a Docker container application. +# Launch Backdrop using Docker + +> [!TIP] +> You **do not need** to clone this repository in order to launch Backdrop using Docker. + +This section explains how to launch Backdrop CMS as a Docker container application. The process of "spinning up" Backdrop as a Docker container application involves: 1) Ensuring Docker is installed on the host machine 2) Creating a named directory to hold Docker configuration file(s) - 3) Creating a new Docker startup file (also called: a _Docker Compose_ file) referencing a Backdrop Docker Image + 3) Creating a new Docker startup file (usually called: a _Docker Compose_ file) referencing a Backdrop Docker Image 4) Launching Docker in such a way that it processes the new Docker startup file (using the command `docker compose`) ## Step 1: Ensure Docker is Installed on the Host Machine + [Click here to see Docker's installation instructions for Windows, Mac and Linux](https://www.docker.com/get-started) The following example checks for the existence of Docker on a Linux host: @@ -34,6 +39,7 @@ cd backdrop-eval ``` ## Step 3: Create a New Docker Startup (i.e. _Docker compose_) File Referencing a Backdrop Docker Image + Docker offers a way to launch docker images that need to work together as an application. Such files are called _Docker compose_ files and are usually used when more than one Docker image is needed by the application. In the case of Backdrop, it is not sufficient to run the Backdrop Docker image which contains an Apache PHP application. Additionally, a MySQL database server is also needed. Hence, to "spin up" the Backdrop application (which involves running these two images), a Docker compose file is conveniently used. This is the `compose.yml` file, which contains all the settings needed to help Docker set up ad run the two containers, in a manner that allows them to interoperate as an application. @@ -137,12 +143,37 @@ services: image: {repository}/{image}:{tag} ``` -The image specifier is made up of 3 parts: a `{repository}`, `{image}` and `{tag}`. When `{repository}` is omitted, the format becomes `{image}:{tag}`. When the `{tag}` is omitted, this simply becomes `{image}`. +The image specifier is made up of the following parts: +| Part | Mandatory? | Default Value | Description | +|------|------------|---------------|-------------| +| `{repository}` | No | `docker.io` | is the URL at which a Docker image repository is serving a catalogue/collection of Docker images. When omitted, this defaults to [Docker Hub](https://hub.docker.com/). | +| `{image}` | Yes | - | is the name of the Docker image on the Docker repository. | +| `{tag}` | No | `latest` | is a variation of the image. When omitted, it defaults to "latest" (also called [the default image](#what-is-a-default-docker-image)). | > [!NOTE] -> The `{repository}` part above is omitted when the source of the image is [Docker Hub](https://hub.docker.com/). The `{tag}` is omitted when the tag desired is "latest". +> Depending on which parts are stated and which ones are omitted, you can encounter one of a few image specifier forms such as `{repository}/{image}`, `{image}:{tag}`, `{image}`, or `{repository}/{tag}`. -[Click here to see a list of available Backdrop Official-Docker-Image tags](https://hub.docker.com/_/backdrop/tags) +To view all the tags associated with the [official Backdrop image](#what-is-a-backdrop-docker-official-image) on Docker Hub, you can [click here](https://hub.docker.com/_/backdrop/tags). + +### Building and Using Your Modified Backdrop Docker Image + +Instead of using an image specifier in the `image` field in `compose.yml`. It is possible to point to a local directory containining a [Dockerfile](#what-is-a-dockerfile), as follows: + +``` +services: + backdrop: + image: + context: ./1/apache +``` + +In this case, the `docker compose` command would search the current folder (the folder in which the `compose.yml` file resides) for a subfolder named `1`, in which another subfolder `apache` exists, and look for a file called `Dockerfile` there (with a capitalized `D`). Inside of this file, are instructions on how to create a custom image using the [Dockerfile syntax](https://docs.docker.com/reference/dockerfile/). + +Example Dockerfiles for building Backdrop Docker images are found in this repository in the following locations: +- [/1/apache/Dockerfile](./1/apache/Dockerfile): is a Dockerfile that can be used to build a Docker image that uses Apache as an underlying server. +- [/1/fpm/Dockerfile](./1/fpm/Dockerfile): is a Dockerfile that can be used to build a Docker image that uses Nginx as an underlying server. + +> [!NOTE] +> Similar versions using either Apache or Nginx also exist on Docker Hub (using the `apache` and `fpm` tags, specifically), so unless the current images on Docker Hub are broken or that you want to modify these images, there won't usually be a need for you to build your own images as explained here. # About Docker