-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
155 lines (122 loc) · 6.74 KB
/
Makefile
File metadata and controls
155 lines (122 loc) · 6.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
include make_commands.mk
DOCKER-COMPOSE-FILE=./docker-compose.yml
NOW := `date +%Y-%m-%d_%H%M%S`
EXISTING_DUMP_FILE_NAME := existing-${NOW}.bak
FILE=""
all: help
help:
@echo "Usage:"
@echo " make build - rebuild all docker containers"
@echo " make up - start all docker containers with existing data"
@echo " make down - stop all executed docker containers"
@echo " make export - export existing data to dump for backup"
@echo " make backup - the same as above"
@echo " make dump - the same as above"
@echo " make import FILE=file_name - import file_name into database container (Be careful! Existing data backup does not performed automatically! Use make backup together!)"
@echo " make latest - import data/latest.bak into database container (Be careful! Existing data backup does not performed automatically! Use make backup together!)"
@echo " make last - the same as above"
@echo " make schema - auto-generation database schema from json file (see backend/src/parser/README.md)"
@echo " make psql - connect to the database using psql"
@echo " make bash/backend - open a shell in the backend container"
@echo " make logs/backend - view logs for the backend container"
@echo " make upload-skills - upload skills using the provided USER and PASS"
start:
up:
@docker ps | grep 1gency-app-db > /dev/null || docker compose -f ${DOCKER-COMPOSE-FILE} up -d db
@docker ps | grep 1gency-app-backend > /dev/null || docker compose -f ${DOCKER-COMPOSE-FILE} up -d backend
@docker ps | grep 1gency-app-client > /dev/null || docker compose -f ${DOCKER-COMPOSE-FILE} up -d client
stop:
down:
@docker compose -f ${DOCKER-COMPOSE-FILE} stop client
@docker compose -f ${DOCKER-COMPOSE-FILE} stop backend
@docker compose -f ${DOCKER-COMPOSE-FILE} stop db
build: stop
docker compose -f ${DOCKER-COMPOSE-FILE} build --no-cache --force-rm
################################################################################
# Генерация файла generated_models.py из JSON-схемы #
################################################################################
schema:
@docker compose exec backend python make_schema.py
################################################################################
# Варианты backup'а #
################################################################################
real_backup:
@test -d backend/data || mkdir backend/data
@echo ${EXISTING_DUMP_FILE_NAME} > /tmp/current_export_file_name.txt
@docker ps | grep 1gency-app-db > /dev/null || docker compose -f ${DOCKER-COMPOSE-FILE} up -d db
@docker exec -it 1gency-app-db pg_dump -U python upwork_tools -p 5434 > backend/data/`cat /tmp/current_export_file_name.txt`
@( cd backend/data && ln -sf ./`cat /tmp/current_export_file_name.txt` ./latest.bak )
@rm -f /tmp/current_export_file_name.txt
backup: real_backup
@echo "** Data backup done **"
export: real_backup
@echo "** Data export done **"
dump: real_backup
@echo "** Data dump done **"
################################################################################
# Импорт произвольного дампа в контейнер #
################################################################################
import-v1: stop
@if [ -z ${FILE} ]; then ( echo "Usage: make import FILE=some_file_for_import"; exit 1; ) fi
@if [ ! -f ${FILE} -a ! -h ${FILE} ]; then ( echo "File ${FILE} not found"; exit 1 ) fi
# Оставляем гарантированно только один контейнер, db (совместно с операцией stop).
@docker ps | grep 1gency-app-db > /dev/null || docker compose -f ${DOCKER-COMPOSE-FILE} up -d db
@echo "Copy db file to container..."
@docker cp -L ${FILE} 1gency-app-db:/tmp/imported_dump.bak || exit 1
@echo "recreate db in container..."
@docker exec -it 1gency-app-db psql -U python -d postgres -p 5434 -c 'drop database if exists upwork_tools;'
@docker exec -it 1gency-app-db psql -U python -d postgres -p 5434 -c 'create database upwork_tools;'
@echo "Import db into container..."
@echo "psql -U python -d upwork_tools -p 5434 < /tmp/imported_dump.bak" > /tmp/recreate_in_docker.sh
@chmod a+x /tmp/recreate_in_docker.sh
@docker cp /tmp/recreate_in_docker.sh 1gency-app-db:/tmp
@docker exec -it 1gency-app-db bash /tmp/recreate_in_docker.sh
@echo "** data/latest.bak imported into database container. **"
@make start
@echo "** all containers has been started. **"
import:
@if [ -z ${FILE} ]; then echo "Usage: make import FILE=some_file_for_import"; exit 1; fi
@if [ ! -f ${FILE} -a ! -h ${FILE} ]; then echo "File ${FILE} not found"; exit 1; fi
@echo "Stop unused containers..."
@docker compose -f ${DOCKER-COMPOSE-FILE} down
@docker compose -f ${DOCKER-COMPOSE-FILE} up -d db --wait
@sleep 1
@echo "Copy db file to container..."
@docker compose -f ${DOCKER-COMPOSE-FILE} cp -L ${FILE} db:/tmp/imported_dump.bak || exit 1
@echo "Drop old db in container..."
@docker compose -f ${DOCKER-COMPOSE-FILE} exec db bash -c 'PGPASSWORD=python psql -U python -d postgres -p 5434 -c "drop database if exists upwork_tools;"'
@echo "Initialize blank db in container..."
@docker compose -f ${DOCKER-COMPOSE-FILE} exec db psql -U python -d postgres -p 5434 -c 'create database upwork_tools;'
@echo "Import db into container..."
@docker compose -f ${DOCKER-COMPOSE-FILE} exec db bash -c 'psql -U python -d upwork_tools -p 5434 < /tmp/imported_dump.bak'
@docker compose -f ${DOCKER-COMPOSE-FILE} up -d
@echo "** all containers has been started. **"
################################################################################
# Импорт последнего существующего дампа в контейнер #
################################################################################
latest-v1:
@make import-v1 FILE=backend/data/latest.bak
latest:
@make import FILE=backend/data/latest.bak
last: latest
################################################################################
psql:
@docker exec -it 1gency-app-db psql -U python upwork_tools -p 5434
bash/backend:
@docker compose exec backend /bin/sh
logs/backend:
@docker compose logs backend
dump-dir:
@find . -type d \( -name venv -o -name .git -o -name .idea \) -prune -o -print | pbcopy
@echo "Directory structure copied to clipboard."
generate-commands:
@python3 generate_make_commands.py > make_commands.mk
generate-kb:
python3 generate_kb.py
abort-cp:
@rm -f temp_*.txt state.yml
@echo "Copying process aborted. All temporary files and states have been removed."
upload-skills:
./backend/scripts/import_skills.sh ${USER} ${PASS}
db-migrate:
@docker compose exec backend flask db migrate -d src/migrations