Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f58306cbb4 | ||
|
|
b8499e2ce6 |
No files matched your search
@@ -5,3 +5,4 @@ __pycache__/
|
|||||||
wheels/
|
wheels/
|
||||||
docs/*.bkp
|
docs/*.bkp
|
||||||
docs/*.dtmp
|
docs/*.dtmp
|
||||||
|
build/
|
||||||
@@ -3,11 +3,12 @@ PYTHON := $(VENV)/bin/python
|
|||||||
PIP := $(VENV)/bin/pip
|
PIP := $(VENV)/bin/pip
|
||||||
WHEELS_DIR := wheels
|
WHEELS_DIR := wheels
|
||||||
REQUIREMENTS := requirements.txt
|
REQUIREMENTS := requirements.txt
|
||||||
|
ver ?= latest
|
||||||
|
|
||||||
MAKECMDGOALS_TARGETS := install freeze wheels sync sync-offline clean help
|
MAKECMDGOALS_TARGETS := install freeze wheels sync sync-offline clean help build release
|
||||||
PKG := $(filter-out $(MAKECMDGOALS_TARGETS),$(MAKECMDGOALS))
|
PKG := $(filter-out $(MAKECMDGOALS_TARGETS),$(MAKECMDGOALS))
|
||||||
|
|
||||||
.PHONY: install freeze wheels sync sync-offline clean help venv
|
.PHONY: install freeze wheels sync sync-offline clean help venv build release
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "make install <pkg> [<pkg> ...] - установить пакет(ы) в $(VENV), обновить $(REQUIREMENTS), собрать wheel в $(WHEELS_DIR)/"
|
@echo "make install <pkg> [<pkg> ...] - установить пакет(ы) в $(VENV), обновить $(REQUIREMENTS), собрать wheel в $(WHEELS_DIR)/"
|
||||||
@@ -16,6 +17,8 @@ help:
|
|||||||
@echo "make freeze - перезаписать $(REQUIREMENTS) текущим состоянием окружения"
|
@echo "make freeze - перезаписать $(REQUIREMENTS) текущим состоянием окружения"
|
||||||
@echo "make wheels - собрать wheel для всех пакетов из $(REQUIREMENTS)"
|
@echo "make wheels - собрать wheel для всех пакетов из $(REQUIREMENTS)"
|
||||||
@echo "make clean - удалить $(WHEELS_DIR)/"
|
@echo "make clean - удалить $(WHEELS_DIR)/"
|
||||||
|
@echo "make build [ver=latest] - собрать docker-образ robotex:<ver>"
|
||||||
|
@echo "make release ver=<ver> - собрать образ и пакет для деплоя в build/<ver>/ (compose, .env, образ .tar.gz)"
|
||||||
|
|
||||||
venv:
|
venv:
|
||||||
@test -d $(VENV) || python3 -m venv $(VENV)
|
@test -d $(VENV) || python3 -m venv $(VENV)
|
||||||
@@ -46,6 +49,35 @@ wheels: venv
|
|||||||
clean:
|
clean:
|
||||||
rm -rf $(WHEELS_DIR)
|
rm -rf $(WHEELS_DIR)
|
||||||
|
|
||||||
|
build:
|
||||||
|
@echo "build an application"
|
||||||
|
docker build -t robotex:$(ver) .
|
||||||
|
|
||||||
|
RELEASE_DIR := build/$(ver)
|
||||||
|
|
||||||
|
ifneq ($(filter release,$(MAKECMDGOALS)),)
|
||||||
|
ifeq ($(ver),latest)
|
||||||
|
$(error Укажите версию: make release ver=v0.0.2)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
release: build
|
||||||
|
@echo "make release $(ver) -> $(RELEASE_DIR)/"
|
||||||
|
@mkdir -p $(RELEASE_DIR)
|
||||||
|
sed 's|image: robotex:.*|image: robotex:$(ver)|' docker-compose.prod.yml > $(RELEASE_DIR)/docker-compose.yml
|
||||||
|
cp dot_env $(RELEASE_DIR)/.env
|
||||||
|
docker save robotex:$(ver) | gzip > $(RELEASE_DIR)/robotex-$(ver).tar.gz
|
||||||
|
@printf '%s\n' \
|
||||||
|
'# Robotex $(ver)' \
|
||||||
|
'' \
|
||||||
|
'```bash' \
|
||||||
|
'docker load -i robotex-$(ver).tar.gz' \
|
||||||
|
'docker compose up -d' \
|
||||||
|
'```' \
|
||||||
|
'' \
|
||||||
|
'Настройки (порт, CPU, память) — в .env.' > $(RELEASE_DIR)/README.md
|
||||||
|
@echo "Готово: $(RELEASE_DIR)/"
|
||||||
|
|
||||||
# позволяет передавать имя пакета как аргумент: make install redis
|
# позволяет передавать имя пакета как аргумент: make install redis
|
||||||
%:
|
%:
|
||||||
@:
|
@:
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
services:
|
||||||
|
api:
|
||||||
|
image: robotex:v0.0.1
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${API_PORT:-8000}:8000"
|
||||||
|
env_file:
|
||||||
|
- path: .env
|
||||||
|
required: false
|
||||||
|
volumes:
|
||||||
|
- api-data:/app/extra
|
||||||
|
# Chrome активно использует /dev/shm, дефолтных 64MB не хватает
|
||||||
|
shm_size: "2gb"
|
||||||
|
# Потолок ресурсов: при переборе OOM-killer прибьёт процесс Chrome внутри контейнера,
|
||||||
|
# а не соседние сервисы на хосте. Подбирать под сервер вместе с BROWSER_SLOTS.
|
||||||
|
cpus: ${API_CPUS:-4}
|
||||||
|
mem_limit: ${API_MEM_LIMIT:-8g}
|
||||||
|
memswap_limit: ${API_MEM_LIMIT:-8g}
|
||||||
|
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
api-data:
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
api:
|
api:
|
||||||
build: .
|
build: .
|
||||||
image: robotex-api
|
image: robotex:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "${API_PORT:-8000}:8000"
|
- "${API_PORT:-8000}:8000"
|
||||||
|
|||||||
Reference in new issue
Block a user