c0aea3e683
Support using `docker compose` (docker compose v2) instead of `docker-compose` (v1) - Introduce `COMPOSE_V2` and `COMPOSE_COMMAND` variables - Keep the default version at v1 (`COMPOSE_V2=0`) - Refactor error message to expose that possibility Signed-off-by: Nicolas signed-log FORMICHELLA <stigpro@outlook.fr>
105 lines
2.8 KiB
Makefile
105 lines
2.8 KiB
Makefile
IGNORED = .jekyll-metadata Gemfile.lock _site
|
|
VOLUME_ARG =
|
|
COMPOSE_V2 = 0
|
|
|
|
ifeq ($(COMPOSE_V2),1)
|
|
COMPOSE_COMMAND = docker compose
|
|
else
|
|
COMPOSE_COMMAND = docker-compose
|
|
endif
|
|
|
|
.PHONY: all
|
|
all:
|
|
@$(MAKE) usage | less
|
|
|
|
# Display usage for all make targets
|
|
.PHONY: usage
|
|
usage:
|
|
@echo
|
|
@echo 'make TARGET'
|
|
@echo
|
|
@echo 'TESTING'
|
|
@echo
|
|
@echo ' make test'
|
|
@echo ' - Perform tests done by continuous integration.'
|
|
@echo ' This target will:'
|
|
@echo ' - Remove previously built data'
|
|
@echo ' - Build the site'
|
|
@echo ' - Test the site using html-proofer'
|
|
@echo
|
|
@echo ' make up'
|
|
@echo ' - Start a container to locally test the website.'
|
|
@echo ' This target will:'
|
|
@echo ' - Start a jekyll container (re-using it if it already exists)'
|
|
@echo ' - Expose the website on port 4000 of the local host'
|
|
@echo
|
|
@echo ' make logs'
|
|
@echo ' - Tail the logs of the running jekyll container.'
|
|
@echo
|
|
@echo ' make restart'
|
|
@echo ' - Restart the jekyll container.'
|
|
@echo
|
|
@echo ' make down'
|
|
@echo ' - Shutdown and remove the jekyll container.'
|
|
@echo
|
|
@echo ' make clean'
|
|
@echo ' - Remove previously built data and any jekyll containers.'
|
|
@echo
|
|
@echo ' make fresh'
|
|
@echo ' - Like "make clean", but also removes the docker volumes.'
|
|
@echo
|
|
|
|
.PHONY: test
|
|
test: require-docker-compose clean
|
|
$(COMPOSE_COMMAND) run --rm website test/validate
|
|
|
|
.PHONY: up
|
|
up: require-docker-compose
|
|
$(COMPOSE_COMMAND) up --no-recreate -d
|
|
@echo
|
|
@echo Started docker container. It will probably take a bit of time before
|
|
@echo the webserver is listening. You can run \"make logs\" to watch the logs
|
|
@echo of this container.
|
|
@echo
|
|
@echo The site will be served at http://0.0.0.0:4000/
|
|
|
|
.PHONY: logs
|
|
logs: require-docker-compose
|
|
$(COMPOSE_COMMAND) logs --tail 0 -f
|
|
|
|
.PHONY: restart
|
|
restart: require-docker-compose
|
|
$(COMPOSE_COMMAND) restart
|
|
|
|
.PHONY: down
|
|
down: require-docker-compose
|
|
$(COMPOSE_COMMAND) down --remove-orphans ${VOLUME_ARG}
|
|
|
|
.PHONY: clean
|
|
clean: down
|
|
rm -rf ${IGNORED}
|
|
|
|
.PHONY: fresh
|
|
fresh: VOLUME_ARG = -v
|
|
fresh: clean
|
|
|
|
.PHONY: require-docker-compose
|
|
require-docker-compose: require-docker
|
|
@if [ "$(COMPOSE_V2)" = "0" ]; then \
|
|
if ! command -v "docker-compose" >/dev/null 2>&1; then \
|
|
echo "Sorry, this make target requires docker-compose to be installed. To use compose v2, re-run with COMPOSE_V2=1"; \
|
|
false; \
|
|
fi \
|
|
else \
|
|
if ! $(COMPOSE_COMMAND) >/dev/null 2>&1; then \
|
|
echo "Sorry, this make target has been configured to support docker compose v2 but the compose subcommand isn't present in docker. To use docker-compose v1, remove the COMPOSE_V2 switch"; \
|
|
false; \
|
|
fi \
|
|
fi
|
|
|
|
.PHONY: require-docker
|
|
require-docker:
|
|
@if ! command -v "docker" >/dev/null 2>&1; then \
|
|
echo "Sorry, this make target requires docker to be installed."; \
|
|
false; \
|
|
fi
|