# General settings APP_NAME := pluralityspace PYTHON ?= python3 # Development server SERVER_LISTEN ?= 0.0.0.0:8042 # Deployment settings STAGE ?= production GIT_CRYPT_KEY ?= ~/.git-crypt-keys/$(APP_NAME)-$(STAGE).key DOCKER_COMPOSE_YML := .deployment/$(STAGE)/docker-compose.yml APP_CONTAINER_NAME := django .PHONY: run docker-build docker-run decrypt deploy deploy-full live-log live-migrate live-collectstatic live-shell # Default target: none all: ### Local development # Run django development server run: $(PYTHON) manage.py runserver $(SERVER_LISTEN) # Build docker image (without docker-compose) docker-build: docker build -t $(APP_NAME):latest . # Run docker image (without docker-compose) docker-run: docker run --rm -ti -p 8000:8000 $(APP_NAME):latest ### Deployment # Unlock git-crypted production secrets decrypt: git-crypt unlock $(GIT_CRYPT_KEY) # Meta target for deploying: docker-compose up, migrate and collectstatic deploy-full: deploy live-migrate live-collectstatic # Deploy on production using docker-compose deploy: docker-compose -f $(DOCKER_COMPOSE_YML) up --build --detach # Show logs for running container live-log: docker-compose -f $(DOCKER_COMPOSE_YML) logs -f # Run shell in live container live-shell: docker-compose -f $(DOCKER_COMPOSE_YML) exec ${APP_CONTAINER_NAME} sh # Run django 'migrate' command on live container live-migrate: docker-compose -f $(DOCKER_COMPOSE_YML) exec ${APP_CONTAINER_NAME} manage.py migrate --no-input # Run django 'collectstatic' command on live container live-collectstatic: docker-compose -f $(DOCKER_COMPOSE_YML) exec ${APP_CONTAINER_NAME} manage.py collectstatic --no-input --clear