chore: Dockerfile (python:3.11-slim), api/.env.example и api/.env.test
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
8e15696913
commit
ebf87f39da
19
Dockerfile
Normal file
19
Dockerfile
Normal file
@ -0,0 +1,19 @@
|
||||
# Образ для dev и `make check-full`. Контекст сборки — корень репозитория tabular-parser.
|
||||
# Платформенные пакеты raisa_* (Nexus) в образ не ставятся — та же логика, что в `make venv`.
|
||||
FROM python:3.11-slim
|
||||
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=1
|
||||
|
||||
WORKDIR /app/api
|
||||
|
||||
COPY api/requirements.txt ./requirements.txt
|
||||
RUN grep -v '^raisa_' requirements.txt > /tmp/req.txt \
|
||||
&& pip install --no-cache-dir -r /tmp/req.txt \
|
||||
&& rm /tmp/req.txt
|
||||
|
||||
COPY api/ ./
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD ["python", "run_server.py"]
|
||||
37
api/.env.example
Normal file
37
api/.env.example
Normal file
@ -0,0 +1,37 @@
|
||||
# Пример локального окружения. Скопируйте в api/.env: cp .env.example .env
|
||||
# Порты и учётные данные — стандартные для docs/dev/docker-compose.yml (`make up`: NATS 4222, MinIO 9000).
|
||||
# Сервис без БД: видит только NATS и S3.
|
||||
|
||||
DEBUG=true
|
||||
|
||||
# Dev-запуск слушает только loopback. По умолчанию приложения (без этих строк) — 0.0.0.0:8000, как в контейнере платформы.
|
||||
SERVER__HOST=127.0.0.1
|
||||
SERVER__PORT=8000
|
||||
|
||||
# MinIO (адрес без схемы — так ждёт miniopy-async). Один бакет для входных файлов и результатов.
|
||||
OPENBAO__MINIO__MINIO_URL=localhost:9000
|
||||
OPENBAO__MINIO__MINIO_ADMIN_LOGIN=minioadmin
|
||||
OPENBAO__MINIO__MINIO_ADMIN_PASSWORD=minioadmin
|
||||
OPENBAO__MINIO__MINIO_BUCKET=arm-ka
|
||||
# false — MinIO по http (docker compose); по умолчанию true (https, как на платформе)
|
||||
OPENBAO__MINIO__MINIO_SECURE=false
|
||||
|
||||
# NATS без JetStream; пустые NATS_SEED/NATS_JWT — подключение без nkeys
|
||||
OPENBAO__NATS__NATS_URL=nats://localhost:4222
|
||||
OPENBAO__NATS__NATS_SEED=
|
||||
OPENBAO__NATS__NATS_JWT=
|
||||
|
||||
# Необязательные настройки (значения ниже — значения по умолчанию из src/core/config.py)
|
||||
# Префикс путей приложения за прокси и версия в OpenAPI
|
||||
ROOT_PATH=/
|
||||
VERSION=1.0.0
|
||||
# `service.name` конвертов контракта и имя queue group NATS; менять не нужно, пока контракт v1.x
|
||||
SERVICE_NAME=tabular-parser
|
||||
# false — не подключаться к NATS (воркер не стартует; /healthcheck отдаёт nats = down)
|
||||
NATS_ENABLED=true
|
||||
# Число заданий, обрабатываемых одновременно
|
||||
WORKER_CONCURRENCY=1
|
||||
# Попытки публикации ack и результата в NATS
|
||||
PUBLISH_RETRIES=3
|
||||
# Размер process-local LRU обработанных job_id (защита от дублей доставки)
|
||||
DONE_CACHE_SIZE=1000
|
||||
26
api/.env.test
Normal file
26
api/.env.test
Normal file
@ -0,0 +1,26 @@
|
||||
# Окружение тестов (pytest.ini: ENV_FILE=.env.test). Только тестовые значения, секретов здесь нет.
|
||||
# Порты и учётные данные — стандартные для docs/dev/docker-compose.yml (NATS 4222, MinIO 9000):
|
||||
# после `make up` интеграционные тесты работают без правок.
|
||||
|
||||
DEBUG=true
|
||||
|
||||
# Как в .env.example (тесты сервер не запускают)
|
||||
SERVER__HOST=127.0.0.1
|
||||
SERVER__PORT=8000
|
||||
|
||||
OPENBAO__MINIO__MINIO_URL=localhost:9000
|
||||
OPENBAO__MINIO__MINIO_ADMIN_LOGIN=minioadmin
|
||||
OPENBAO__MINIO__MINIO_ADMIN_PASSWORD=minioadmin
|
||||
OPENBAO__MINIO__MINIO_BUCKET=arm-ka
|
||||
# false — MinIO по http (docker compose); по умолчанию true (https, как на платформе)
|
||||
OPENBAO__MINIO__MINIO_SECURE=false
|
||||
|
||||
OPENBAO__NATS__NATS_URL=nats://localhost:4222
|
||||
OPENBAO__NATS__NATS_SEED=
|
||||
OPENBAO__NATS__NATS_JWT=
|
||||
|
||||
# Unit-тесты поднимают приложение без NATS; интеграционные включают его сами (см. design D-6)
|
||||
NATS_ENABLED=false
|
||||
WORKER_CONCURRENCY=1
|
||||
PUBLISH_RETRIES=3
|
||||
DONE_CACHE_SIZE=1000
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
### Task 5: [2.2] `Dockerfile` (`python
|
||||
|
||||
- [ ] `Dockerfile` (`python:3.11-slim`), `.env.example`, `.env.test`; проверка: `docker build -t tabular-parser .` успешен
|
||||
- [x] `Dockerfile` (`python:3.11-slim`), `.env.example`, `.env.test`; проверка: `docker build -t tabular-parser .` успешен
|
||||
|
||||
### Task 6: [3.1] `api/contracts/` — копии трёх схем + `examples/` из `../docs/contracts`
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
- [x] 2.1 `api/pyproject.toml` (ruff: line-length 120, E,F,I,UP,B,PL; mypy с плагином pydantic), `requirements-dev.txt`
|
||||
= `-r requirements.txt` + ruff, mypy, pytest, pytest-asyncio, pytest-env, httpx, jsonschema; `Makefile`: `venv`
|
||||
(python3.11), `lint`, `test`, `test-integration`, `check`, `check-full`, `up`; проверка: `make venv && make lint` зелёные
|
||||
- [ ] 2.2 `Dockerfile` (`python:3.11-slim`), `.env.example`, `.env.test`; проверка: `docker build -t tabular-parser .` успешен
|
||||
- [x] 2.2 `Dockerfile` (`python:3.11-slim`), `.env.example`, `.env.test`; проверка: `docker build -t tabular-parser .` успешен
|
||||
|
||||
## 3. Контракт
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user