Add boilerplate code, Docker environment, Makefile etc.
This commit is contained in:
parent
1e9d351173
commit
114a67dbe4
21 changed files with 3766 additions and 0 deletions
102
Makefile
Normal file
102
Makefile
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
# Current UID and GID that the containers will be started as
|
||||
DOCKER_UID = "$(shell id -u):$(shell id -g)"
|
||||
|
||||
# Basic docker-compose command
|
||||
DOCKER_COMPOSE = DOCKER_UID=$(DOCKER_UID) docker-compose
|
||||
|
||||
# Commands inside containers
|
||||
DOCKER_RUN = $(DOCKER_COMPOSE) run --rm app
|
||||
COMPOSER = $(DOCKER_RUN) composer
|
||||
PHPUNIT = $(DOCKER_RUN) vendor/bin/phpunit
|
||||
|
||||
.PHONY: all clean \
|
||||
docker-up docker-up-detached docker-down docker-restart docker-build docker-rebuild docker-purge docker-logs docker-run \
|
||||
composer-install composer-install-no-dev composer-update composer-cmd \
|
||||
test phpunit open-coverage
|
||||
|
||||
# Default target
|
||||
all: docker-build composer-install docker-up
|
||||
|
||||
|
||||
# Container management
|
||||
# --------------------
|
||||
|
||||
# Start docker containers in foreground mode, building images if needed
|
||||
docker-up:
|
||||
$(DOCKER_COMPOSE) up --build
|
||||
|
||||
# Start docker containers in detached mode
|
||||
docker-up-detached:
|
||||
$(DOCKER_COMPOSE) up --build --detach
|
||||
|
||||
# Stop running docker containers
|
||||
docker-down:
|
||||
$(DOCKER_COMPOSE) down
|
||||
|
||||
# Restart docker containers (use `make docker-restart SERVICE=foo` to just restart a specific service)
|
||||
docker-restart:
|
||||
$(DOCKER_COMPOSE) restart $(SERVICE)
|
||||
|
||||
# Build container images without starting the containers
|
||||
docker-build:
|
||||
$(DOCKER_COMPOSE) build
|
||||
|
||||
# Rebuild docker containers from scratch (pulling base images and ignoring cache)
|
||||
docker-rebuild:
|
||||
$(DOCKER_COMPOSE) build --pull --no-cache
|
||||
|
||||
# Stop running docker containers and delete all volumes
|
||||
docker-purge:
|
||||
$(DOCKER_COMPOSE) down --volumes
|
||||
|
||||
# Show container logs (use `make docker-logs SERVICE=foo` to just select a specific service)
|
||||
docker-logs:
|
||||
$(DOCKER_COMPOSE) logs -f $(SERVICE) || true
|
||||
|
||||
# Run command in app container (e.g. `make docker-run CMD="bash"`)
|
||||
docker-run:
|
||||
$(DOCKER_RUN) "$(or $(CMD),bash)"
|
||||
|
||||
|
||||
# Dependency management
|
||||
# ---------------------
|
||||
|
||||
# Install PHP composer dependencies inside the app container
|
||||
composer-install:
|
||||
$(COMPOSER) install
|
||||
|
||||
# Install PHP composer dependencies without development dependencies like phpunit
|
||||
composer-install-no-dev:
|
||||
$(COMPOSER) install --no-dev
|
||||
|
||||
# Update PHP composer dependencies inside the app container
|
||||
composer-update:
|
||||
$(COMPOSER) update
|
||||
|
||||
# Run arbitrary composer commands inside the app container (e.g. `make composer-cmd CMD="help"`)
|
||||
composer-cmd:
|
||||
@test -n "$(CMD)" || (echo "Please use 'make composer-cmd CMD=\"some command\"'"; exit 1)
|
||||
$(COMPOSER) $(CMD)
|
||||
|
||||
|
||||
# Test suites
|
||||
# -----------
|
||||
|
||||
# Run all test suites
|
||||
test: phpunit
|
||||
|
||||
# Run phpunit tests
|
||||
phpunit:
|
||||
$(PHPUNIT) -c phpunit.xml --testdox
|
||||
|
||||
# Open HTML coverage report in $BROWSER (needs to be generated by phpunit first)
|
||||
open-coverage:
|
||||
$(or $(BROWSER),firefox) coverage/index.html
|
||||
|
||||
|
||||
# Clean up
|
||||
# --------
|
||||
|
||||
# Remove vendor directory, phpunit caches and other files that have been generated
|
||||
clean: docker-down
|
||||
rm -rf .composer vendor .phpunit.cache coverage
|
||||
Loading…
Add table
Add a link
Reference in a new issue