Add docker deploy
This commit is contained in:
parent
52931caf3c
commit
900065b158
|
@ -0,0 +1,71 @@
|
|||
__pycache__
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
.Python
|
||||
env
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
.tox
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.log
|
||||
.git
|
||||
.mypy_cache
|
||||
.pytest_cache
|
||||
.hypothesis
|
||||
.ruff_cache
|
||||
|
||||
.DS_Store
|
||||
.vscode
|
||||
.idea
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
*.md
|
||||
!README.md
|
||||
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
.env.production
|
||||
.env.staging
|
||||
|
||||
storage/chroma/*
|
||||
!storage/chroma/.gitkeep
|
||||
|
||||
articles_konsol_pro/*
|
||||
!articles_konsol_pro/.gitkeep
|
||||
|
||||
scripts/
|
||||
src/tests/
|
||||
src/__pycache__/
|
||||
|
||||
*.tmp
|
||||
*.temp
|
||||
*.bak
|
||||
*.backup
|
||||
|
||||
Dockerfile*
|
||||
docker-compose*
|
||||
.dockerignore
|
||||
|
||||
.github
|
||||
.gitlab-ci.yml
|
||||
.travis.yml
|
||||
.circleci
|
||||
.gitea
|
||||
|
||||
logs/
|
||||
*.log
|
||||
|
||||
.venv/
|
||||
venv/
|
||||
env/
|
||||
|
||||
Техническое задание.md
|
|
@ -0,0 +1,38 @@
|
|||
FROM python:3.10-slim
|
||||
|
||||
LABEL maintainer="AI Email Assistant Team"
|
||||
LABEL version="1.0.0"
|
||||
LABEL description="AI Email Assistant with RAG and LangGraph"
|
||||
|
||||
RUN groupadd -r appuser && useradd -r -g appuser appuser
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gcc \
|
||||
g++ \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& apt-get clean
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir --upgrade pip && \
|
||||
pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN mkdir -p /app/storage/chroma /app/data/articles_konsol_pro && \
|
||||
chown -R appuser:appuser /app
|
||||
|
||||
USER appuser
|
||||
|
||||
ENV PYTHONPATH=/app
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
ENV PYTHONDONTWRITEBYTECODE=1
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
||||
CMD curl -f http://localhost:8000/healthz || exit 1
|
||||
|
||||
CMD ["uvicorn", "src.app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
|
@ -0,0 +1,51 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
ai-email-assistant:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: ai-email-assistant
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
- LLM_PROVIDER=openai
|
||||
- LLM_MODEL=gpt-4o
|
||||
- EMBEDDING_MODEL=text-embedding-3-large
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||
- GEMINI_API_KEY=${GEMINI_API_KEY}
|
||||
- CHROMA_PERSIST_DIR=/app/storage/chroma
|
||||
- TOP_K=30
|
||||
- TOP_N_CONTEXT=6
|
||||
- MAX_TOKENS_COMPLETION=1024
|
||||
- LANGGRAPH_TRACING=false
|
||||
- SERVICE_LANG=ru
|
||||
- SALES_REP_NAME=Команда Консоль.Про
|
||||
- CHUNK_SIZE=500
|
||||
- CHUNK_OVERLAP=100
|
||||
- API_SECRET_KEY=${API_SECRET_KEY:-secret}
|
||||
- PYTHONPATH=/app
|
||||
- PYTHONUNBUFFERED=1
|
||||
- PYTHONDONTWRITEBYTECODE=1
|
||||
volumes:
|
||||
- ./storage/chroma:/app/storage/chroma:rw
|
||||
- ./data:/app/data:ro
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8000/healthz"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 2G
|
||||
cpus: '1.0'
|
||||
reservations:
|
||||
memory: 512M
|
||||
cpus: '0.5'
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
tmpfs:
|
||||
- /tmp:noexec,nosuid,size=100m
|
Loading…
Reference in New Issue