Skip to content

Commit

Permalink
Merge pull request #130 from Metadrop/feature/docker-compose-plugin-v2
Browse files Browse the repository at this point in the history
Feature/docker compose plugin v2
  • Loading branch information
rsanzante authored Jan 8, 2024
2 parents ba5685f + faba943 commit 368cb10
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 32 deletions.
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ DB_HOST=mariadb
DB_PORT=3306
DB_DRIVER=mysql


### --- Docker Compose ---
# V1
# DOCKER_COMPOSE_CMD=docker-compose
# V2
DOCKER_COMPOSE_CMD=docker compose


### --- MARIADB ----

MARIADB_TAG=10.5-3.10.0
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ jobs:
runs-on: ubuntu-latest

steps:

- name: Checkout repository
uses: actions/checkout@v2

Expand Down
30 changes: 15 additions & 15 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,27 @@ info:
## test : Run Unit tests. Pass the path to a file or directory with the Unit test. Example: make test web/modules/contrib/devel/tests/src/Unit
.PHONY: test
test:
docker-compose exec php phpunit $(filter-out $@,$(MAKECMDGOALS))
$(DOCKER_COMPOSE_CMD) exec php phpunit $(filter-out $@,$(MAKECMDGOALS))

## behat : Run project Behat tests
.PHONY: behat
behat:
docker-compose exec php ${BEHAT} --colors
$(DOCKER_COMPOSE_CMD) exec php ${BEHAT} --colors

## ngrok : Setup a ngrok tunnel to make the site available
.PHONY: ngrok
ngrok:
docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.ngrok.yml up -d && docker-compose exec php curl http://ngrok:4040/api/tunnels | grep -Po "https"://[^\"]+
$(DOCKER_COMPOSE_CMD) -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.ngrok.yml up -d && $(DOCKER_COMPOSE_CMD) exec php curl http://ngrok:4040/api/tunnels | grep -Po "https"://[^\"]+

## ngrok-stop : Stop the created ngrok tunnel
.PHONY: ngrok-stop
ngrok-stop:
docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.ngrok.yml stop ngrok && docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.ngrok.yml rm -fsv ngrok
$(DOCKER_COMPOSE_CMD) -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.ngrok.yml stop ngrok && $(DOCKER_COMPOSE_CMD) -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.ngrok.yml rm -fsv ngrok

## frontend : Generate frontend assets like compiling scss
.PHONY: frontend
frontend:
docker-compose exec -w ${FRONTEND_BASE_PATH}/$(frontend_target) node sh ${DOCKER_PROJECT_ROOT}/scripts/frontend-build.sh $(filter-out $@,$(MAKECMDGOALS))
$(DOCKER_COMPOSE_CMD) exec -w ${FRONTEND_BASE_PATH}/$(frontend_target) node sh ${DOCKER_PROJECT_ROOT}/scripts/frontend-build.sh $(filter-out $@,$(MAKECMDGOALS))

## backstopjs-reference : Generate BackstopJS reference files
## An optional parameter is available to generate only scenarios matching it.
Expand All @@ -48,7 +48,7 @@ frontend:
## Example: make backstopjs_type=environment/pro backstopjs-test
.PHONY: backstopjs-reference
backstopjs-reference:
docker-compose exec -T backstopjs sh -c "cd tests/${backstopjs_type}/backstopjs && backstop reference --filter='$(filter-out $@,$(MAKECMDGOALS))'"
$(DOCKER_COMPOSE_CMD) exec -T backstopjs sh -c "cd tests/${backstopjs_type}/backstopjs && backstop reference --filter='$(filter-out $@,$(MAKECMDGOALS))'"

## backstopjs-test : Run BackstopJS tests
## An optional parameter is available to generate only scenarios matching it.
Expand All @@ -59,7 +59,7 @@ backstopjs-reference:
## Example: make backstopjs_type=environment/pro backstopjs-test
.PHONY: backstopjs-test
backstopjs-test:
docker-compose exec -T backstopjs sh -c "cd tests/${backstopjs_type}/backstopjs && backstop test --filter='$(filter-out $@,$(MAKECMDGOALS))'"
$(DOCKER_COMPOSE_CMD) exec -T backstopjs sh -c "cd tests/${backstopjs_type}/backstopjs && backstop test --filter='$(filter-out $@,$(MAKECMDGOALS))'"

## setup-init : Prepares the site
.PHONY: setup-init
Expand All @@ -69,18 +69,18 @@ setup-init:
cp docker-compose.override.yml.dist docker-compose.override.yml
cp web/sites/${SITE}/example.settings.local.php web/sites/${SITE}/settings.local.php
cp web/sites/${SITE}/example.local.drush.yml web/sites/${SITE}/local.drush.yml
docker-compose up -d
docker-compose exec -T php composer install
docker-compose run -e'PHP_ERROR_REPORTING=E_ALL & ~E_DEPRECATED' --rm -T php 'vendor/bin/grumphp' 'git:init'
$(DOCKER_COMPOSE_CMD) up -d
$(DOCKER_COMPOSE_CMD) exec -T php composer install
$(DOCKER_COMPOSE_CMD) run -e'PHP_ERROR_REPORTING=E_ALL & ~E_DEPRECATED' --rm -T php 'vendor/bin/grumphp' 'git:init'

## setup : Prepares the site and installs it using the Drupal configuration files
.PHONY: setup
setup:
make setup-init
docker-compose exec -T php drush @${SITE}.local si ${PROFILE} --existing-config --sites-subdir=${SITE} -y
docker-compose exec -T php drush @${SITE}.local cim -y
docker-compose exec -T php drush @${SITE}.local cr
docker-compose exec -T php drush @${SITE}.local uli
$(DOCKER_COMPOSE_CMD) exec -T php drush @${SITE}.local si ${PROFILE} --existing-config --sites-subdir=${SITE} -y
$(DOCKER_COMPOSE_CMD) exec -T php drush @${SITE}.local cim -y
$(DOCKER_COMPOSE_CMD) exec -T php drush @${SITE}.local cr
$(DOCKER_COMPOSE_CMD) exec -T php drush @${SITE}.local uli

## setup-from-environment : Prepares the site and loads it with data from the reference site
.PHONY: setup-from-environment
Expand All @@ -96,4 +96,4 @@ solr-sync:
## solr-rebuild : Re-creates the Solr core
.PHONY: solr-rebuild
solr-rebuild:
docker-compose stop solr && docker-compose rm -f solr && docker-compose up -d solr && make solr-sync
$(DOCKER_COMPOSE_CMD) stop solr && $(DOCKER_COMPOSE_CMD) rm -f solr && $(DOCKER_COMPOSE_CMD) up -d solr && make solr-sync
24 changes: 12 additions & 12 deletions docker.mk
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ help :
.PHONY: up
up:
@echo "Starting up containers for $(PROJECT_NAME)..."
docker-compose pull
docker-compose up -d --remove-orphans
$(DOCKER_COMPOSE_CMD) pull
$(DOCKER_COMPOSE_CMD) up -d --remove-orphans

.PHONY: mutagen
mutagen:
docker-compose up -d mutagen
$(DOCKER_COMPOSE_CMD) up -d mutagen
mutagen project start -f mutagen/config.yml

## down : Stop containers.
Expand All @@ -32,13 +32,13 @@ down: stop
.PHONY: start
start:
@echo "Starting containers for $(PROJECT_NAME) from where you left off..."
@docker-compose start
@$(DOCKER_COMPOSE_CMD) start

## stop : Stop containers.
.PHONY: stop
stop:
@echo "Stopping containers for $(PROJECT_NAME)..."
@docker-compose stop
@$(DOCKER_COMPOSE_CMD) stop

## prune : Remove containers and their volumes.
## You can optionally pass an argument with the service name to prune single container
Expand All @@ -47,7 +47,7 @@ stop:
.PHONY: prune
prune:
@echo "Removing containers for $(PROJECT_NAME)..."
@docker-compose down -v $(filter-out $@,$(MAKECMDGOALS))
@$(DOCKER_COMPOSE_CMD) down -v $(filter-out $@,$(MAKECMDGOALS))

## ps : List running containers.
.PHONY: ps
Expand Down Expand Up @@ -80,23 +80,23 @@ drush:
## logs nginx php : View `nginx` and `php` containers logs.
.PHONY: logs
logs:
@docker-compose logs -f $(filter-out $@,$(MAKECMDGOALS))
@$(DOCKER_COMPOSE_CMD) logs -f $(filter-out $@,$(MAKECMDGOALS))

## xdebug : Enable xdebug.
.PHONY: xdebug
xdebug:
@echo "Enabling xdebug in $(PROJECT_NAME)."
@echo "¡¡CAUTION!! X-debug will only work if you have correctly configured docker-compose.xdebug.override.yml file."
docker-compose stop php
docker-compose pull php
docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.xdebug.override.yml up -d php
$(DOCKER_COMPOSE_CMD) stop php
$(DOCKER_COMPOSE_CMD) pull php
$(DOCKER_COMPOSE_CMD) -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.xdebug.override.yml up -d php

## xdebug-disable : Disable xdebug.
.PHONY: xdebug-stop
xdebug-stop:
@echo "Disabling xdebug in $(PROJECT_NAME)."
docker-compose stop php
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d php
$(DOCKER_COMPOSE_CMD) stop php
$(DOCKER_COMPOSE_CMD) -f docker-compose.yml -f docker-compose.override.yml up -d php

# https://stackoverflow.com/a/6273809/1826109
%:
Expand Down
10 changes: 5 additions & 5 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Tools included out-of-the-box:

It is based on [Docker4Drupal](https://wodby.com/docs/1.0/stacks/drupal/local/), which uses Docker and Docker Compose. To get all the information about available webservers, databases, PHP versions and other containers check their [wodby/docker4drupa repository](https://github.com/wodby/docker4drupal).

Because it uses Docker under the hood, you can customize whatever you want, add new containers or use any standard Docker funcionality to accomodate your project needs.
Because it uses Docker under the hood, you can customize whatever you want, add new containers or use any standard Docker functionality to accommodate your project needs.

## Quickview

Expand All @@ -30,11 +30,11 @@ https://github.com/Metadrop/drupal-boilerplate/assets/776453/2b3d53c6-e2bf-4c48-
## Requisites

- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)
- [Docker Compose](https://docs.docker.com/compose/install/) with release 3.0.1 or previous. After 3.0.2 by default Docker Compose V2, [included in Docker](https://www.docker.com/blog/announcing-compose-v2-general-availability/), is used. The variable `DOCKER_COMPOSE_CMD=docker compose` can be used to select Docker Compose V1 if required.

**Optionally**

- Pyhton 3 with PyYAML installed for the `make info` command
- Python 3 with PyYAML installed for the `make info` command

## Usage

Expand All @@ -50,11 +50,11 @@ Depending in the Drupal release you want you should use a different branch.

| Drupal release | Boilerplate branch | Example command |
|--- |--- |--- |
| 10.x | 3.x branch | composer create-project --ignore-platform-reqs metadrop/drupal-boilerplate my-project |
| 10.x | 3.x branch | composer create-project --ignore-platform-reqs metadrop/drupal-boilerplate my-project |
| 9.x | 2.x branch | composer create-project --ignore-platform-reqs metadrop/drupal-boilerplate:^2 my-project |


NOTE: 2.x branch is minimally maintained because Drupal9 support ends Nomvember, 2023.
NOTE: 2.x branch is minimally maintained because Drupal9 support ends November, 2023.


Because this boilerplate uses drupal/core-recommended under the hood you will get an updated release of the chosen core.
Expand Down

0 comments on commit 368cb10

Please sign in to comment.