agent docker
Some checks failed
Build and Push Agent Docker Image / build (push) Successful in 1m40s
Build and Push Docker Image / build (push) Failing after 1m7s

This commit is contained in:
2025-12-11 23:45:29 +01:00
parent f326053101
commit ed9c817d5e
6 changed files with 154 additions and 84 deletions

View File

@@ -0,0 +1,30 @@
name: Build and Push Agent Docker Image
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: git.seaturtle.pw
username: ${{ gitea.actor }}
password: ${{ secrets.ACTIONS_PUSH_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
context: ./web/agent
push: true
tags: git.seaturtle.pw/cavepedia/cavepediav2-agent:latest

View File

@@ -1,109 +1,122 @@
# CopilotKit <> LangGraph Starter
# Cavepedia Web
### Referenes
https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md
Next.js frontend with integrated LangGraph agent for Cavepedia.
## Project Structure
This is a starter template for building AI agents using [LangGraph](https://www.langchain.com/langgraph) and [CopilotKit](https://copilotkit.ai). It provides a modern Next.js application with an integrated LangGraph agent to be built on top of.
```
web/
├── src/ # Next.js application
├── agent/ # LangGraph agent (Python)
│ ├── main.py # Agent graph definition
│ ├── langgraph.json
│ ├── pyproject.toml
│ └── Dockerfile # Production container
└── ...
```
## Prerequisites
- Node.js 18+
- Python 3.8+
- Any of the following package managers:
- [pnpm](https://pnpm.io/installation) (recommended)
- npm
- [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable)
- [bun](https://bun.sh/)
- Anthropic API Key (for the LangGraph agent)
- Node.js 18+
- Python 3.12+
- [pnpm](https://pnpm.io/installation) (recommended) or npm/yarn/bun
- Google AI API Key (for the LangGraph agent)
> **Note:** This repository ignores lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) to avoid conflicts between different package managers. Each developer should generate their own lock file using their preferred package manager. After that, make sure to delete it from the .gitignore.
## Development
## Getting Started
### 1. Install dependencies
1. Install dependencies using your preferred package manager:
```bash
# Using pnpm (recommended)
pnpm install
# Using npm
npm install
# Using yarn
yarn install
# Using bun
bun install
```
> **Note:** Installing the package dependencies will also install the agent's python dependencies via the `install:agent` script.
This also installs the agent's Python dependencies via the `install:agent` script.
### 2. Set up environment variables
2. Set up your Anthropic API key:
```bash
echo 'ANTHROPIC_API_KEY=your-anthropic-api-key-here' > agent/.env
# Agent environment
cp agent/.env.example agent/.env
# Edit agent/.env with your API keys
```
3. Start the development server:
### 3. Start development servers
```bash
# Using pnpm
pnpm dev
# Using npm
npm run dev
# Using yarn
yarn dev
# Using bun
bun run dev
```
This will start both the UI and agent servers concurrently.
This starts both the Next.js UI and LangGraph agent servers concurrently.
## Agent Deployment
The agent is containerized for production deployment using the official LangGraph API server image.
### Building the Docker image
```bash
cd agent
docker build -t cavepediav2-agent .
```
### Running in production
The agent requires PostgreSQL and Redis for persistence and pub/sub:
```bash
docker run \
-p 8123:8000 \
-e REDIS_URI="redis://redis:6379" \
-e DATABASE_URI="postgres://user:pass@postgres:5432/langgraph" \
-e GOOGLE_API_KEY="your-key" \
-e LANGSMITH_API_KEY="your-key" \
cavepediav2-agent
```
Or use Docker Compose with the required services:
```yaml
services:
redis:
image: redis:7
postgres:
image: postgres:16
environment:
POSTGRES_DB: langgraph
POSTGRES_USER: langgraph
POSTGRES_PASSWORD: langgraph
agent:
image: git.seaturtle.pw/cavepedia/cavepediav2-agent:latest
ports:
- "8123:8000"
environment:
REDIS_URI: redis://redis:6379
DATABASE_URI: postgres://langgraph:langgraph@postgres:5432/langgraph
GOOGLE_API_KEY: ${GOOGLE_API_KEY}
depends_on:
- redis
- postgres
```
### CI/CD
The agent image is automatically built and pushed to `git.seaturtle.pw/cavepedia/cavepediav2-agent:latest` on push to `main` via Gitea Actions.
## Available Scripts
The following scripts can also be run using your preferred package manager:
- `dev` - Starts both UI and agent servers in development mode
- `dev:debug` - Starts development servers with debug logging enabled
- `dev:ui` - Starts only the Next.js UI server
- `dev:agent` - Starts only the LangGraph agent server
- `build` - Builds the Next.js application for production
- `start` - Starts the production server
- `lint` - Runs ESLint for code linting
- `install:agent` - Installs Python dependencies for the agent
## Documentation
- `dev` - Start both UI and agent servers
- `dev:ui` - Start only Next.js
- `dev:agent` - Start only LangGraph agent
- `build` - Build Next.js for production
- `start` - Start production server
- `lint` - Run ESLint
- `install:agent` - Install agent Python dependencies
The main UI component is in `src/app/page.tsx`. You can:
- Modify the theme colors and styling
- Add new frontend actions
- Customize the CopilotKit sidebar appearance
## References
## 📚 Documentation
- [LangGraph Documentation](https://langchain-ai.github.io/langgraph/) - Learn more about LangGraph and its features
- [CopilotKit Documentation](https://docs.copilotkit.ai) - Explore CopilotKit's capabilities
- [Next.js Documentation](https://nextjs.org/docs) - Learn about Next.js features and API
- [YFinance Documentation](https://pypi.org/project/yfinance/) - Financial data tools
## Contributing
Feel free to submit issues and enhancement requests! This starter is designed to be easily extensible.
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Troubleshooting
### Agent Connection Issues
If you see "I'm having trouble connecting to my tools", make sure:
1. The LangGraph agent is running on port 8000
2. Your Anthropic API key is set correctly
3. Both servers started successfully
### Python Dependencies
If you encounter Python import errors:
```bash
npm install:agent
```
- [LangGraph Documentation](https://langchain-ai.github.io/langgraph/)
- [CopilotKit Documentation](https://docs.copilotkit.ai)
- [Next.js Documentation](https://nextjs.org/docs)
- [Auth0 Next.js SDK Examples](https://github.com/auth0/nextjs-auth0/blob/main/EXAMPLES.md)

14
web/agent/.dockerignore Normal file
View File

@@ -0,0 +1,14 @@
Dockerfile
.dockerignore
.git
.gitignore
.env
.env.*
.venv/
venv/
__pycache__/
*.pyc
*.pyo
.langgraph_api/
.vercel/
*.md

13
web/agent/Dockerfile Normal file
View File

@@ -0,0 +1,13 @@
# syntax=docker/dockerfile:1
FROM langchain/langgraph-api:3.12
# Copy dependency files and install
ADD pyproject.toml uv.lock /deps/agent/
RUN cd /deps/agent && pip install --no-cache-dir -e .
# Copy application code
ADD main.py langgraph.json /deps/agent/
# Set the graph configuration
ENV LANGSERVE_GRAPHS='{"vpi_1000": "/deps/agent/main.py:graph"}'

View File

@@ -4,7 +4,7 @@
"dependencies": ["."],
"package_manager": "uv",
"graphs": {
"sample_agent": "./main.py:graph"
"vpi_1000": "./main.py:graph"
},
"env": ".env"
}

View File

@@ -1,5 +1,5 @@
[project]
name = "sample-agent"
name = "vpi-1000"
version = "0.1.0"
description = "A LangGraph agent"
requires-python = ">=3.12"