Reviewed-on: #4
This commit is contained in:
commit
a176dcac52
7 changed files with 117 additions and 0 deletions
9
.dockerignore
Normal file
9
.dockerignore
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
.venv/
|
||||||
|
.git/
|
||||||
|
.idea/
|
||||||
|
.pytest_cache/
|
||||||
|
.ruff_cache/
|
||||||
|
*.md
|
||||||
|
*.pyc
|
||||||
|
__pycache__/
|
||||||
|
.env
|
||||||
3
.env.example
Normal file
3
.env.example
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
PROVIDER_URL=http://localhost:8000/v1
|
||||||
|
PROVIDER_API_KEY=your-api-key
|
||||||
|
PROVIDER_MODEL=gpt-4
|
||||||
7
.mk/inside.mk
Normal file
7
.mk/inside.mk
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
.PHONY: uvicorn-dev uvicorn-prod
|
||||||
|
|
||||||
|
uvicorn-dev:
|
||||||
|
uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
|
||||||
|
|
||||||
|
uvicorn-prod:
|
||||||
|
uvicorn src.main:app --host 0.0.0.0 --port 8000
|
||||||
7
.mk/outside.mk
Normal file
7
.mk/outside.mk
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
.PHONY: up-dev up-prod
|
||||||
|
|
||||||
|
up-dev:
|
||||||
|
docker compose --profile dev up $(ARGS)
|
||||||
|
|
||||||
|
up-prod:
|
||||||
|
docker compose --profile prod up $(ARGS)
|
||||||
52
Dockerfile
Normal file
52
Dockerfile
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
FROM python:3.14-slim as base
|
||||||
|
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
|
PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
RUN apt update && apt install make -y
|
||||||
|
|
||||||
|
FROM base as builder
|
||||||
|
|
||||||
|
RUN apt install git -y
|
||||||
|
RUN pip install uv
|
||||||
|
|
||||||
|
COPY pyproject.toml uv.lock ./
|
||||||
|
RUN uv sync --frozen --no-install-project --no-dev
|
||||||
|
RUN uv pip install git+https://git.lambda.coredump.ru/platform/agent_api.git
|
||||||
|
|
||||||
|
FROM base as production
|
||||||
|
|
||||||
|
RUN useradd --create-home --shell /bin/bash appuser
|
||||||
|
|
||||||
|
COPY --from=builder /app/.venv /app/.venv
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
COPY src/ /app/src/
|
||||||
|
COPY Makefile ./
|
||||||
|
COPY .mk/ ./.mk/
|
||||||
|
|
||||||
|
USER appuser
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
CMD ["make", "uvicorn-prod"]
|
||||||
|
|
||||||
|
FROM base as development
|
||||||
|
|
||||||
|
RUN pip install uv
|
||||||
|
|
||||||
|
COPY pyproject.toml uv.lock ./
|
||||||
|
RUN uv sync --frozen --no-install-project
|
||||||
|
|
||||||
|
COPY --from=agent_api . /agent_api/
|
||||||
|
RUN uv pip install -e /agent_api/
|
||||||
|
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
COPY Makefile ./
|
||||||
|
COPY .mk/ ./.mk/
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
CMD ["make", "uvicorn-dev"]
|
||||||
13
Makefile
Normal file
13
Makefile
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
.DEFAULT_GOAL := help
|
||||||
|
|
||||||
|
-include .mk/outside.mk
|
||||||
|
-include .mk/inside.mk
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "Outside commands:"
|
||||||
|
@echo " make up-dev - build and run dev container"
|
||||||
|
@echo " make up-prod - build and run prod container"
|
||||||
|
@echo ""
|
||||||
|
@echo "Inside container:"
|
||||||
|
@echo " make uvicorn-dev - run with hot reload"
|
||||||
|
@echo " make uvicorn-prod - run production"
|
||||||
26
docker-compose.yml
Normal file
26
docker-compose.yml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
services:
|
||||||
|
agent:
|
||||||
|
image: mrkan0/lambda-agent:latest
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
restart: unless-stopped
|
||||||
|
profiles:
|
||||||
|
- prod
|
||||||
|
|
||||||
|
agent-dev:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
target: development
|
||||||
|
additional_contexts:
|
||||||
|
agent_api: ${AGENT_API_PATH}
|
||||||
|
volumes:
|
||||||
|
- ./src:/app/src
|
||||||
|
- ${AGENT_API_PATH}:/agent-api/
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
profiles:
|
||||||
|
- dev
|
||||||
Loading…
Add table
Add a link
Reference in a new issue