https://github.com/geerlingguy/jeffgeerling-com
Drupal Codebase for JeffGeerling.com
https://github.com/geerlingguy/jeffgeerling-com
drupal jeff-geerling migration personal website
Last synced: 7 months ago
JSON representation
Drupal Codebase for JeffGeerling.com
- Host: GitHub
- URL: https://github.com/geerlingguy/jeffgeerling-com
- Owner: geerlingguy
- License: gpl-2.0
- Created: 2020-02-04T16:08:34.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-01-09T05:25:29.000Z (9 months ago)
- Last Synced: 2025-02-27T00:04:32.279Z (7 months ago)
- Topics: drupal, jeff-geerling, migration, personal, website
- Language: PHP
- Homepage: https://www.jeffgeerling.com
- Size: 1.36 MB
- Stars: 55
- Watchers: 10
- Forks: 3
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# JeffGeerling.com Drupal Codebase
[](https://github.com/geerlingguy/jeffgeerling-com/actions?query=workflow%3ACI)
This is the Drupal codebase that powers [JeffGeerling.com](https://www.jeffgeerling.com).
The building of this project and the migration of JeffGeerling.com from Drupal 7 to Drupal 8 has been live-streamed on geerlingguy's YouTube channel; you can watch all the episodes and see episode summaries and resources here: [Migrating JeffGeerling.com from Drupal 7 to Drupal 8 - How-to video series](https://www.jeffgeerling.com/blog/2020/migrating-jeffgeerlingcom-drupal-7-drupal-8-how-video-series).
I decided to open-source my website's codebase to help other Drupal users see how I built and maintain this site. If you like what you see or have been helped in any way by this project, please consider supporting me via [Patreon](https://www.patreon.com/geerlingguy), [GitHub Sponsors](https://github.com/sponsors/geerlingguy), or another [affiliate link](https://www.jeffgeerling.com/affiliates).
## Deploying to Production
Currently the process for deploying runs from the Midwestern Mac infrastructure playbook:
ansible-playbook main.yml --tags=deploy
### Docker in Production
This repository includes a `Dockerfile.prod` intended for building a production-ready image (with all code and assets included).
To build that image:
docker build -f Dockerfile.prod -t geerlingguy/jeffgeerling-com:arm64 .
Then you can push the image to the official [`geerlingguy/jeffgeerling-com`](https://hub.docker.com/r/geerlingguy/jeffgeerling-com) repository on Docker Hub:
docker push geerlingguy/jeffgeerling-com:arm64
> Note: The image is automatically built and pushed to Docker Hub via GitHub Actions every time a commit is pushed to the `master` branch.
## Local Environment
The first time you start using this project, you need to create your local settings file:
cp web/sites/default/example.settings.local.php web/sites/default/settings.local.php
Make sure you have Docker installed, then run the following command (in the same directory as this README file):
docker compose up -d
Install PHP dependencies running Composer inside the container:
docker compose exec drupal composer install
Visit http://localhost/ to see the Drupal installation. Visit http://localhost:8025/ to see MailHog.
### Installing Drupal
You can install Drupal using the install wizard, but we like to use Drush for more automation:
docker compose exec drupal bash -c 'vendor/bin/drush site:install minimal --db-url="mysql://drupal:$DRUPAL_DATABASE_PASSWORD@$DRUPAL_DATABASE_HOST/drupal" --site-name="Jeff Geerling" --existing-config -y'
### Syncing the Database from Production
At some point, I'll write up how to do it all with Drush, automated.
For now:
1. Open Sequel Ace, download database from prod server.
2. Open Sequel Ace, upload database to local environment.### Updating Configuration
Any time configuration is changed or any modules or Drupal is upgraded, you should export the site's configuration using the command:
docker compose exec drupal bash -c 'vendor/bin/drush config:export -y'
And then push any changes to the Git repository before deploying the latest code to the site.
### Upgrading Core (and Contrib)
1. Set up the site like normal, make sure it's installed.
2. Run `docker compose exec drupal bash -c 'composer update'` (to update everything).
3. Run `docker compose exec drupal bash -c 'vendor/bin/drush updb -y'`
4. Run `docker compose exec drupal bash -c 'vendor/bin/drush config:export -y'`
5. Commit any changes and push to remote.
6. Run the deploy playbook to update the live site.### Linting PHP code against Drupal's Coding Standards
You can test the custom code in this project using `phpcs`:
docker compose exec drupal bash -c './vendor/bin/phpcs \
--standard="Drupal,DrupalPractice" -n \
--extensions="php,module,inc,install,test,profile,theme" \
web/themes/jeffgeerling \
web/modules/custom'### Email Debugging with MailHog
The Docker configuration for this project enables a [MailHog](https://github.com/mailhog/MailHog) container, which has a web UI available at `http://127.0.0.1:8025`.
The `php.ini` file for the local environment is automatically configured to use `mhsendmail` to send PHP's email through the mailhog instance when you're using this project's `Dockerfile` to build the Drupal environment.
When Drupal sends an email, it should be visible in Mailhog's UI.