feat: сборка в контейнеры
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
APP__URL=https://app.example.com
|
||||
DB__URL=postgresql+asyncpg://user:password@localhost:5432/tgex
|
||||
DB__URL=postgresql+asyncpg://user:password@postgres:5432/tgex
|
||||
LOGGER__APP_NAME="tgex-backend"
|
||||
LOGGER__PRETTY_CONSOLE=true
|
||||
TELEGRAM__TOKEN=your_bot_token_here
|
||||
|
||||
@@ -12,7 +12,9 @@ COPY alembic.ini ./
|
||||
COPY migration ./migration
|
||||
|
||||
ENV PYTHONPATH=/shared:/src
|
||||
ARG GIT_COMMIT=unknown
|
||||
ENV GIT_COMMIT=${GIT_COMMIT}
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD ["uvicorn src.main:app --host 0.0.0.0 --port 8000"]
|
||||
CMD [".venv/bin/uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
||||
26
Makefile
Normal file
26
Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
test:
|
||||
pytest --no-header
|
||||
|
||||
env:
|
||||
cp .env.example .env
|
||||
|
||||
up:
|
||||
GIT_COMMIT=$$(git rev-parse --short HEAD) docker compose up --build -d --force-recreate
|
||||
docker compose logs -f
|
||||
|
||||
migrate:
|
||||
docker exec -it tgex-backend-backend-1 .venv/bin/alembic upgrade head
|
||||
|
||||
down:
|
||||
docker compose down
|
||||
|
||||
clean:
|
||||
@docker rm -f $$(docker ps -aq) 2>/dev/null || true
|
||||
@docker rmi -f $$(docker images --filter "dangling=true" -q) 2>/dev/null || true
|
||||
@docker images --format "{{.Repository}}:{{.Tag}}" | grep -E "^(crm|local)" | xargs -r docker rmi -f 2>/dev/null || true
|
||||
@docker volume rm $$(docker volume ls -q) 2>/dev/null || true
|
||||
@docker network rm $$(docker network ls -q | grep -vE 'bridge|host|none') 2>/dev/null || true
|
||||
@docker system prune --volumes -f
|
||||
@echo "${GREEN}Docker очистка завершена. Базовые образы из registry сохранены.${NC}"
|
||||
|
||||
|
||||
21
README.md
21
README.md
@@ -1 +1,22 @@
|
||||
# tgex-backend
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
```bash
|
||||
# Запустить
|
||||
make up
|
||||
|
||||
# Применить миграции
|
||||
make migrate
|
||||
```
|
||||
|
||||
Открыть:
|
||||
- API: http://localhost:8000
|
||||
- Docs: http://localhost:8000/docs
|
||||
|
||||
## Команды
|
||||
|
||||
- `make test` - запустить тесты
|
||||
- `make up` - поднять приложение
|
||||
- `make migrate` - применить миграции БД
|
||||
- `make down` - остановить контейнеры
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
services:
|
||||
backend:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
GIT_COMMIT: ${GIT_COMMIT:-unknown}
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "8000:8000"
|
||||
depends_on:
|
||||
- postgres
|
||||
|
||||
postgres:
|
||||
image: postgres
|
||||
environment:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
@@ -10,6 +11,8 @@ from .json_formatter import JSONFormatter
|
||||
|
||||
|
||||
def get_git_commit() -> str:
|
||||
if commit := os.getenv('GIT_COMMIT'):
|
||||
return commit
|
||||
try:
|
||||
return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'], text=True).strip()
|
||||
except Exception:
|
||||
|
||||
Reference in New Issue
Block a user