123 lines
4.8 KiB
Makefile
123 lines
4.8 KiB
Makefile
|
|
CLIENT=tt-website
|
|
|
|
DOCKERCOMPOSE := $(shell command -v docker-compose 2> /dev/null)
|
|
USAGE := Usage: make ENV={prod|preprod|dev} {SYS=windows|linux} {docker-build|docker-start|docker-stop|docker-restart}
|
|
|
|
ifndef DOCKERCOMPOSE
|
|
$(error docker-compose is not available)
|
|
endif
|
|
|
|
ifndef ENV
|
|
$(info Environment variable is not set)
|
|
$(info $(USAGE))
|
|
$(error Exiting)
|
|
endif
|
|
|
|
SYS=linux
|
|
|
|
DC_OVERRIDE := $(shell test -e conf/docker-compose.override.yml && echo "--file conf/docker-compose.override.yml")
|
|
DC_OVERRIDE_ENV := $(shell test -e conf/docker-compose.$(ENV).yml && echo "--file conf/docker-compose.$(ENV).yml")
|
|
|
|
ifeq ($(SYS),linux)
|
|
DC=ENV=$(ENV) CLIENT=$(CLIENT) "$(DOCKERCOMPOSE)" --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
|
|
else
|
|
DC=ENV=$(ENV) CLIENT=$(CLIENT) "$(DOCKERCOMPOSE)" --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.win.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
|
|
endif
|
|
|
|
default:
|
|
$(info $(USAGE))
|
|
$(error Exiting)
|
|
|
|
docker-build:
|
|
$(DC) pull
|
|
$(DC) build
|
|
$(DC) up -d
|
|
|
|
docker-start:
|
|
$(DC) start
|
|
|
|
docker-stop:
|
|
$(DC) stop
|
|
|
|
docker-restart: docker-stop docker-start
|
|
|
|
docker-rm: docker-stop
|
|
$(DC) rm
|
|
|
|
config:
|
|
@echo "Configuring docker for environment '$(ENV)'"
|
|
|
|
$(eval SERVER_NAME := $(shell cat volume/www/website/conf/nginx-$(ENV).conf | grep server_name | awk '{print $$NF}' | sed 's/;$$//'))
|
|
@echo " --> Generating nginx symlink for '$(SERVER_NAME)'"
|
|
@docker exec $(CLIENT).nginx.$(ENV) ln -s -f /home/www/website/conf/nginx-$(ENV).conf /home/www/website/conf/nginx.conf
|
|
@docker exec $(CLIENT).nginx.$(ENV) ln -s -f /home/www/website/conf/nginx.conf /etc/nginx/sites-enabled/$(SERVER_NAME).conf
|
|
|
|
@echo " --> Generating symfony symlink"
|
|
@docker exec $(CLIENT).php.$(ENV) ln -s -f /home/www/website/www/app/config/parameters-$(ENV).yml /home/www/website/www/app/config/parameters.yml
|
|
|
|
@echo " --> Generating store symlink"
|
|
@docker exec $(CLIENT).php.$(ENV) ln -s -f /home/www/website/store/config/settings-$(ENV).inc.php /home/www/website/store/config/settings.inc.php
|
|
|
|
@echo " --> Reloading nginx"
|
|
@docker exec $(CLIENT).nginx.$(ENV) nginx -t && docker exec $(CLIENT).nginx.$(ENV) nginx -s reload
|
|
|
|
@echo " --> Generating mysql auth file"
|
|
@cat conf/env/store-mysql.env \
|
|
| python -c "import sys; import string; v=sys.stdin.readline().split('MYSQL_ROOT_PASSWORD=')[1]; print(string.Template(open('conf/build/mysql/my.cnf').read()).substitute({'PASSWORD':v}))" \
|
|
| docker exec -i $(CLIENT).store-mysql.$(ENV) sh -c 'cat > /root/.my.cnf'
|
|
|
|
db-backup-all: db-backup-website db-backup-store
|
|
|
|
db-backup-website:
|
|
@echo "Backing up website database"
|
|
@mkdir -p backup/
|
|
@docker exec -t $(CLIENT).postgres.$(ENV) pg_dumpall --database database -c -U postgres > backup/postgres_`date +%d-%m-%Y"_"%H_%M_%S`.sql
|
|
@docker exec -t $(CLIENT).mongo.$(ENV) mongodump --db=tt_history --gzip --out=/mongo
|
|
@docker cp $(CLIENT).mongo.$(ENV):/dump backup/mongo
|
|
|
|
db-backup-store:
|
|
@echo "Backing up store database"
|
|
@mkdir -p backup/
|
|
@docker exec --tty --interactive $(CLIENT).store-mysql.$(ENV) mysqldump -uroot database > backup/store-mysql_`date +%d-%m-%Y"_"%H_%M_%S`.sql
|
|
|
|
db-restore-all: db-restore-website db-restore-store
|
|
|
|
db-backup-script:
|
|
@mkdir -p backup/
|
|
@docker exec $(CLIENT).postgres.$(ENV) pg_dumpall --database database -c -U postgres > backup/postgres_$(ENV)_`date +%d-%m-%Y"_"%H_%M_%S`.sql
|
|
@docker exec $(CLIENT).store-mysql.$(ENV) mysqldump -uroot database > backup/store-mysql_$(ENV)_`date +%d-%m-%Y"_"%H_%M_%S`.sql
|
|
|
|
db-restore-website:
|
|
@echo "Restoring file to database (backup/postgres.sql)"
|
|
@cat backup/postgres.sql | docker exec -i $(CLIENT).postgres.$(ENV) psql --dbname database -U user
|
|
@docker cp backup/mongo $(CLIENT).mongo.$(ENV):/
|
|
@docker exec -t $(CLIENT).mongo.$(ENV) mongorestore --drop --gzip --db=tt_history /mongo/tt_history
|
|
|
|
db-restore-store:
|
|
@echo "Restoring file to database (backup/store-mysql.sql)"
|
|
@docker exec -i $(CLIENT).store-mysql.$(ENV) mysql -uroot database < backup/store-mysql.sql
|
|
|
|
cc:
|
|
@echo "Clearing symfony cache"
|
|
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console cache:clear --env=prod"
|
|
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console cache:clear --env=dev"
|
|
|
|
entities:
|
|
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:generate:entities AppBundle"
|
|
|
|
db-diff:
|
|
@docker exec -i $(CLIENT).php.$(ENV) su www-data -c "/home/www/website/www/bin/console doctrine:migrations:diff"
|
|
|
|
db-migrate:
|
|
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:migrations:migrate"
|
|
|
|
db-deploy: db-diff db-migrate
|
|
|
|
es-populate:
|
|
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console fos:elastica:populate"
|
|
|
|
sys:
|
|
@echo $(SYS)
|
|
@echo $(DC)
|