Skip to content

Commit ec03732

Browse files
committed
refactor + объеденение в одну репу c ботом
1 parent 3a7a1e2 commit ec03732

56 files changed

Lines changed: 1874 additions & 90 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@ envrc
77
pre-commit-config.yml
88
.env_container
99
__pycache__
10+
.git
11+
.github
12+
tests/
13+
image/

.env.example

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,61 @@
1+
# ==========================================
2+
# РЕЖИМ ЗАПУСКА
3+
# ==========================================
4+
# Управляет тем, к каким хостам подключаются сервисы.
5+
# Для api_backend в Docker (docker-compose.yml) → compose сам проставляет DEV=local_container
6+
# Для event_microservice в Docker → compose сам проставляет DEV=prod
7+
# Для локального запуска api/бота → DEV=local (используется host.docker.internal)
8+
DEV=local
9+
10+
# ==========================================
11+
# API BACKEND (локальный запуск)
12+
# ==========================================
113
HOST=127.0.0.1
214
PORT=8001
3-
APP_MODULE="src.main:app"
4-
5-
DEBUG="yes"
15+
APP_MODULE=api_backend.main:app
16+
DEBUG=yes
617

18+
# ==========================================
19+
# POSTGRESQL
20+
# ==========================================
721
PG_USER=postgres
822
PG_PASSWORD=postgres
923
PG_DB_NAME=postgres
1024
PG_PORT=5432
1125
PG_INNER_PORT=5432
26+
# Для локального запуска: localhost
27+
# Docker-compose переопределяет на: db
1228
PG_HOST=localhost
1329

30+
# ==========================================
31+
# RABBITMQ
32+
# ==========================================
33+
RMQ_USER=rabbit
34+
RMQ_PASSWORD=rabbit
35+
# Имя сервиса в Docker (используется когда DEV=prod или DEV=local_container)
36+
RMQ_HOST=mq
37+
RMQ_NETWOTK_PORT=5672
38+
RMQ_NETWOTK_INNER_PORT=5672
1439
RMQ_UI_PORT=15672
1540
RMQ_UI_INNER_PORT=15672
16-
RMQ_NETWOTK_PORT=5622
17-
RMQ_USERNAME=superuser
18-
RMQ_PASSWORD=superpassword
41+
42+
# ==========================================
43+
# EVENT MICROSERVICE
44+
# ==========================================
45+
EVENT_PORT=8444
46+
47+
# ==========================================
48+
# REDIS
49+
# ==========================================
50+
REDIS_PORT=6379
51+
# Оставить пустым если Redis без пароля (для dev)
52+
REDIS_PASSWORD=
53+
54+
# ==========================================
55+
# TELEGRAM BOT
56+
# ==========================================
57+
TOKEN=your_token_here
58+
REDIS_DATABASE_FOR_AIOGRAM=0
59+
BASE_URL_API_LOCAL=http://localhost:8001/api
60+
BASE_URL_API_CONTAINER=http://api:8001/api
61+
BASE_URL_API_PROD=https://your-prod-domain.com/api

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
.vscode
33
.env
44
.envrc
5+
tg_bot/.env
56

67

78
# Byte-compiled / optimized / DLL files

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ RUN uv sync
99

1010
COPY alembic.ini .
1111
COPY ./migrations ./migrations
12-
COPY ./scripts ./scripts.
13-
COPY ./src ./src
12+
COPY ./scripts ./scripts
13+
COPY ./api_backend ./api_backend
1414

15-
CMD ["uv", "run", "uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8333"]
15+
CMD ["sh", "-c", "uv run uvicorn api_backend.main:app --host 0.0.0.0 --port ${PORT:-8001}"]

Makefile

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,19 @@ ifeq (revision,$(firstword $(MAKECMDGOALS)))
55
$(eval $(RUN_ARGS):;@:)
66
endif
77

8-
.PHONY: start revision migrate
8+
.PHONY: start start-bot up down bot-up bot-down infra-up infra-down revision migrate
99

10+
# --- Локальный запуск ---
11+
12+
# Для разработки бота локально:
13+
# 1. make bot-up — поднять всё кроме бота
14+
# 2. make start-bot — запустить бот локально
15+
start-bot:
16+
uv run python -m tg_bot.main
17+
18+
# Для разработки api локально:
19+
# 1. make infra-up — поднять инфраструктуру
20+
# 2. make start — запустить api локально
1021
start:
1122
uv run uvicorn \
1223
--reload \
@@ -21,14 +32,38 @@ wstart:
2132
"$$APP_MODULE" \
2233
--workers 4
2334

24-
dac:
25-
docker compose down && docker compose up -d
35+
# --- Docker compose ---
36+
37+
# Поднять весь проект (все сервисы включая бот)
38+
up:
39+
docker compose up -d
40+
41+
down:
42+
docker compose down
43+
44+
# Поднять всё кроме бота (для разработки бота локально)
45+
bot-up:
46+
docker compose -f docker-compose.bot.yml up -d
47+
48+
bot-down:
49+
docker compose -f docker-compose.bot.yml down
50+
51+
# Поднять только инфраструктуру (для разработки api локально)
52+
infra-up:
53+
docker compose -f docker-compose.infra.yml up -d
54+
55+
infra-down:
56+
docker compose -f docker-compose.infra.yml down
57+
58+
# --- Alembic ---
2659

2760
revision:
2861
uv run alembic revision --autogenerate -m "$(RUN_ARGS)"
2962

3063
migrate:
3164
uv run alembic upgrade head
3265

66+
# --- Lint ---
67+
3368
st:
3469
ruff . --fix
Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ networks:
1010
services:
1111
mq:
1212
image: rabbitmq:management
13-
env_file:
14-
- .env_api
13+
env_file: .env
1514
environment:
1615
RABBITMQ_DEFAULT_USER: ${RMQ_USER}
1716
RABBITMQ_DEFAULT_PASS: ${RMQ_PASSWORD}
@@ -20,10 +19,11 @@ services:
2019
- "${RMQ_UI_PORT}:${RMQ_UI_INNER_PORT}"
2120
networks:
2221
- scheduler
22+
2323
db:
2424
image: "postgres:16"
2525
restart: always
26-
env_file: .env_api
26+
env_file: .env
2727
environment:
2828
POSTGRES_PASSWORD: ${PG_PASSWORD}
2929
POSTGRES_DB: ${PG_DB_NAME}
@@ -32,15 +32,30 @@ services:
3232
POSTGRES_POOL: 10
3333
ports:
3434
- "${PG_PORT}:${PG_INNER_PORT}"
35-
- "5333:5432"
3635
volumes:
3736
- pg_data:/var/lib/postgresql/data
3837
networks:
3938
- scheduler
39+
40+
redis:
41+
image: "redis:6.2-alpine"
42+
restart: always
43+
ports:
44+
- "${REDIS_PORT}:6379"
45+
volumes:
46+
- redis_data:/data
47+
networks:
48+
- scheduler
49+
4050
event:
41-
image: aleksti/event_med:latest
42-
env_file:
43-
- .env_api
51+
build:
52+
context: ./event_microservice
53+
dockerfile: Dockerfile
54+
env_file: .env
55+
environment:
56+
DEV: prod
57+
PG_HOST: db
58+
RMQ_HOST: mq
4459
depends_on:
4560
- mq
4661
- db
@@ -49,10 +64,17 @@ services:
4964
- "${EVENT_PORT}:${EVENT_PORT}"
5065
networks:
5166
- scheduler
67+
5268
api:
53-
image: aleksti/api_med:latest
54-
env_file:
55-
- .env_api
69+
build:
70+
context: ./
71+
dockerfile: Dockerfile
72+
env_file: .env
73+
environment:
74+
DEV: local_container
75+
HOST: "0.0.0.0"
76+
PG_HOST: db
77+
RMQ_HOST: mq
5678
depends_on:
5779
- mq
5880
- db
@@ -62,24 +84,3 @@ services:
6284
- "${PORT}:${PORT}"
6385
networks:
6486
- scheduler
65-
66-
redis:
67-
image: "redis:6.2-alpine"
68-
restart: always
69-
env_file: .env_api
70-
volumes:
71-
- redis_data:/data
72-
networks:
73-
- scheduler
74-
75-
bot:
76-
image: aleksti/bot_med:latest
77-
env_file: .env_api
78-
networks:
79-
- scheduler
80-
depends_on:
81-
- redis
82-
- mq
83-
- db
84-
- event
85-
- api

docker-compose.infra.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
volumes:
2+
pg_data:
3+
redis_data:
4+
5+
networks:
6+
scheduler:
7+
name: scheduler_space
8+
driver: bridge
9+
10+
services:
11+
mq:
12+
image: rabbitmq:management
13+
env_file: .env
14+
environment:
15+
RABBITMQ_DEFAULT_USER: ${RMQ_USER}
16+
RABBITMQ_DEFAULT_PASS: ${RMQ_PASSWORD}
17+
ports:
18+
- "${RMQ_NETWOTK_PORT}:${RMQ_NETWOTK_INNER_PORT}"
19+
- "${RMQ_UI_PORT}:${RMQ_UI_INNER_PORT}"
20+
networks:
21+
- scheduler
22+
23+
db:
24+
image: "postgres:16"
25+
restart: always
26+
env_file: .env
27+
environment:
28+
POSTGRES_PASSWORD: ${PG_PASSWORD}
29+
POSTGRES_DB: ${PG_DB_NAME}
30+
POSTGRES_USER: ${PG_USER}
31+
POSTGRES_PORT: ${PG_INNER_PORT}
32+
POSTGRES_POOL: 10
33+
ports:
34+
- "${PG_PORT}:${PG_INNER_PORT}"
35+
volumes:
36+
- pg_data:/var/lib/postgresql/data
37+
networks:
38+
- scheduler
39+
40+
redis:
41+
image: "redis:6.2-alpine"
42+
restart: always
43+
ports:
44+
- "${REDIS_PORT}:6379"
45+
volumes:
46+
- redis_data:/data
47+
networks:
48+
- scheduler
49+
50+
event:
51+
build:
52+
context: ./event_microservice
53+
dockerfile: Dockerfile
54+
env_file: .env
55+
environment:
56+
DEV: prod
57+
PG_HOST: db
58+
RMQ_HOST: mq
59+
depends_on:
60+
- mq
61+
- db
62+
restart: always
63+
ports:
64+
- "${EVENT_PORT}:${EVENT_PORT}"
65+
networks:
66+
- scheduler

0 commit comments

Comments
 (0)