147 lines
4.6 KiB
Makefile
147 lines
4.6 KiB
Makefile
include .env
|
|
|
|
.PHONY: up down stop prune ps shell shell_root wp logs
|
|
|
|
default: up
|
|
|
|
#######################################
|
|
# Variable admin
|
|
#######################################
|
|
|
|
REQUIRED_BINS := docker
|
|
$(foreach bin,$(REQUIRED_BINS),\
|
|
$(if $(shell command -v $(bin) 2> /dev/null),$(true),$(error Please install `$(bin)`)))
|
|
|
|
ifeq ($(SITE_URL),)
|
|
$(error SITE_URL is not set)
|
|
endif
|
|
|
|
ABRA ?= abra
|
|
|
|
DOCKER_COMPOSE ?= docker-compose
|
|
|
|
ifeq ($(DOCKER_SUDO), 1)
|
|
DOCKER = sudo docker
|
|
_DOCKER_COMPOSE = sudo $(DOCKER_COMPOSE)
|
|
else
|
|
DOCKER = docker
|
|
_DOCKER_COMPOSE = $(DOCKER_COMPOSE)
|
|
endif
|
|
|
|
#######################################
|
|
# Core commands
|
|
#######################################
|
|
|
|
## Start up containers.
|
|
up:
|
|
@echo "Starting up containers for $(PROJECT_NAME)..."
|
|
$(_DOCKER_COMPOSE) pull
|
|
$(_DOCKER_COMPOSE) up -d --remove-orphans
|
|
|
|
## Stop containers.
|
|
down: stop
|
|
|
|
## Start containers without updating.
|
|
start:
|
|
@echo "Starting containers for $(PROJECT_NAME) from where you left off..."
|
|
@$(_DOCKER_COMPOSE) start
|
|
|
|
## Stop containers.
|
|
stop:
|
|
@echo "Stopping containers for $(PROJECT_NAME)..."
|
|
@$(_DOCKER_COMPOSE) stop
|
|
|
|
## Remove containers and their volumes.
|
|
## You can optionally pass an argument with the service name to prune single container
|
|
prune:
|
|
@echo "Removing containers for $(PROJECT_NAME)..."
|
|
@$(_DOCKER_COMPOSE) down -v $(filter-out $@,$(MAKECMDGOALS))
|
|
|
|
ps:
|
|
@$(_DOCKER_COMPOSE) ps
|
|
|
|
shell:
|
|
@$(_DOCKER_COMPOSE) exec -u user wordpress bash
|
|
|
|
shell_root:
|
|
@$(_DOCKER_COMPOSE) exec wordpress bash
|
|
|
|
## Executes `wp cli`
|
|
## Doesn't support --flag arguments.
|
|
wp:
|
|
$(_DOCKER_COMPOSE) exec -u user wordpress wp $(filter-out $@,$(MAKECMDGOALS))
|
|
|
|
## composer
|
|
## Doesn't support --flag arguments.
|
|
composer:
|
|
$(_DOCKER_COMPOSE) exec -u user wordpress composer $(filter-out $@,$(MAKECMDGOALS))
|
|
|
|
## Show vontainers' logs
|
|
## You can optinally pass an argument with the service name to limit logs
|
|
logs:
|
|
@$(_DOCKER_COMPOSE) logs -f $(filter-out $@,$(MAKECMDGOALS))
|
|
|
|
## Check that all required variables are defined
|
|
check:
|
|
@echo "$$(tput setaf 125)Watch out for any lines starting '-', which indicate settings in .env.sample which aren't in .env$$(tput sgr0)"
|
|
diff -u <(grep -v '^#' .env.sample | grep -v '^$$' | sed -e 's/=.*//g' | sort) <(grep -v '^#' .env | grep -v '^$$' | sed -e 's/=.*//g' | sort) || true
|
|
@echo "$$(tput setaf 125)The following command shouldn't show any differences; if it does, re-copy WORDPRESS_CONFIG_EXTRA fr4om .env.sample to .env$$(tput sgr0)"
|
|
diff -wu <(grep 'CONFIG_EXTRA' .env.sample ) <(grep 'CONFIG_EXTRA' .env)
|
|
|
|
#######################################
|
|
# Content management
|
|
#######################################
|
|
|
|
## Download wp-content files from site
|
|
uploads_fetch:
|
|
@echo -n "About to download ~1.5GB of data, overwriting existing data/uploads.tar.gz. - are you sure? [Y/n] " && read ans && if [ $${ans:-'Y'} = 'n' ]; then \
|
|
printf $(_ERROR) "Aborting as requested\n"; \
|
|
exit 1 ; \
|
|
else \
|
|
printf $(_SUCCESS) "OK" "Continuing" ; \
|
|
$(ABRA) app run --no-tty $(SITE_URL) app tar --owner=0 --group=0 --no-same-owner --no-same-permissions -czf- /var/www/html/wp-content/uploads/ > data/uploads.tar.gz; \
|
|
fi
|
|
|
|
## Load latest wp-content from data/uploads.tar.gz
|
|
uploads_load:
|
|
tar -C wp-content --strip-components=4 -xzf data/uploads.tar.gz
|
|
|
|
#######################################
|
|
# Wacky commands you probably won't need to use
|
|
#######################################
|
|
|
|
## Download database from dev site
|
|
db_fetch:
|
|
$(ABRA) app run $(SITE_URL) db bash -c 'mariadb-dump -u root -p"$$(cat /run/secrets/db_root_password)" wordpress' | gzip > data/dbdump.sql.gz
|
|
|
|
## Load latest database from ~/.abra/backups
|
|
db_load:
|
|
zcat data/dbdump.sql.gz | $(_DOCKER_COMPOSE) exec -T db mysql -u wordpress -pwordpress wordpress
|
|
|
|
## Replace site URL
|
|
fix_url:
|
|
$(_DOCKER_COMPOSE) exec -u user wordpress wp --url=https://$(SITE_URL) search-replace --all-tables-with-prefix 'https://$(SITE_URL)' 'http://$(PROJECT_NAME).localhost'
|
|
|
|
set_local_password:
|
|
$(_DOCKER_COMPOSE) exec -u user wordpress wp user update $(USERNAME) --user_pass=password
|
|
|
|
db_pull: db_fetch db_load fix_url
|
|
|
|
## Sync wp-content from site
|
|
uploads_pull: uploads_fetch uploads_load
|
|
|
|
## Download wp-content files from site
|
|
plugins_fetch:
|
|
$(ABRA) app run --no-tty $(SITE_URL) app tar --owner=0 --group=0 --no-same-owner --no-same-permissions -czf- /var/www/html/wp-content/plugins/ > data/plugins.tar.gz
|
|
|
|
## Load latest plugins from data/plugins.tar.gz
|
|
plugins_load:
|
|
tar -C wp-content --strip-components=4 -xzf data/plugins.tar.gz
|
|
|
|
## Sync plugins from site
|
|
plugins_pull: plugins_fetch plugins_load
|
|
|
|
# "Arguments" for makefiles..
|
|
# https://stackoverflow.com/a/6273809/1826109
|
|
%:
|