chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
node_modules
|
||||
npm-debug.log
|
||||
.git
|
||||
.gitignore
|
||||
*.md
|
||||
.env
|
||||
.DS_Store
|
||||
@@ -0,0 +1,33 @@
|
||||
# Memvid CLI Docker Image
|
||||
FROM ubuntu:24.04
|
||||
|
||||
LABEL org.opencontainers.image.title="Memvid CLI"
|
||||
LABEL org.opencontainers.image.description="AI memory CLI with semantic search"
|
||||
LABEL org.opencontainers.image.url="https://memvid.com"
|
||||
LABEL org.opencontainers.image.source="https://github.com/memvid/memvid"
|
||||
LABEL org.opencontainers.image.vendor="Memvid"
|
||||
LABEL org.opencontainers.image.version="2.0.131"
|
||||
|
||||
# Install system deps + Node.js 24
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
libssl3 \
|
||||
&& curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
|
||||
&& apt-get install -y --no-install-recommends nodejs \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install memvid CLI (pinned version)
|
||||
RUN npm install -g memvid-cli@latest \
|
||||
&& npm cache clean --force
|
||||
|
||||
# Create non-root user (recommended)
|
||||
RUN useradd -m memvid
|
||||
USER memvid
|
||||
|
||||
# Working directory for memory files
|
||||
WORKDIR /data
|
||||
|
||||
# Entrypoint
|
||||
ENTRYPOINT ["memvid"]
|
||||
CMD ["--help"]
|
||||
@@ -0,0 +1,101 @@
|
||||
# Memvid CLI Docker Image
|
||||
|
||||
AI memory CLI with crash-safe, single-file storage and semantic search.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Pull the image
|
||||
docker pull memvid/cli
|
||||
|
||||
# Create a memory
|
||||
docker run --rm -v $(pwd):/data memvid/cli create my-memory.mv2
|
||||
|
||||
# Add documents
|
||||
docker run --rm -v $(pwd):/data memvid/cli put my-memory.mv2 --input doc.pdf
|
||||
|
||||
# Search
|
||||
docker run --rm -v $(pwd):/data memvid/cli find my-memory.mv2 --query "search"
|
||||
```
|
||||
|
||||
## Basic Commands
|
||||
|
||||
```bash
|
||||
# Show help
|
||||
docker run --rm memvid/cli
|
||||
|
||||
# Show version
|
||||
docker run --rm memvid/cli --version
|
||||
|
||||
# Create a memory file (mount local directory)
|
||||
docker run --rm -v $(pwd):/data memvid/cli create my-memory.mv2
|
||||
|
||||
# Ingest a document
|
||||
docker run --rm -v $(pwd):/data memvid/cli put my-memory.mv2 --input document.pdf
|
||||
|
||||
# Search the memory
|
||||
docker run --rm -v $(pwd):/data memvid/cli find my-memory.mv2 --query "search term"
|
||||
|
||||
# Ask questions (requires API key for LLM)
|
||||
docker run --rm -v $(pwd):/data \
|
||||
-e OPENAI_API_KEY="sk-..." \
|
||||
memvid/cli ask my-memory.mv2 "What is this about?" -m openai
|
||||
|
||||
# View stats
|
||||
docker run --rm -v $(pwd):/data memvid/cli stats my-memory.mv2
|
||||
```
|
||||
|
||||
## With API Keys
|
||||
|
||||
```bash
|
||||
# Pass Memvid API key for cloud features
|
||||
docker run --rm -v $(pwd):/data \
|
||||
-e MEMVID_API_KEY="mv2_..." \
|
||||
-e OPENAI_API_KEY="sk-..." \
|
||||
memvid/cli ask my-memory.mv2 "your question"
|
||||
```
|
||||
|
||||
## Shell Alias (Recommended)
|
||||
|
||||
Add to `~/.bashrc` or `~/.zshrc`:
|
||||
|
||||
```bash
|
||||
alias memvid='docker run --rm -v $(pwd):/data -e MEMVID_API_KEY -e OPENAI_API_KEY memvid/cli'
|
||||
```
|
||||
|
||||
Then use normally:
|
||||
|
||||
```bash
|
||||
memvid create my-memory.mv2
|
||||
memvid put my-memory.mv2 --input docs/
|
||||
memvid find my-memory.mv2 --query "hello"
|
||||
```
|
||||
|
||||
## Docker Compose Example
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
memvid:
|
||||
image: memvid/cli:latest
|
||||
volumes:
|
||||
- ./data:/data
|
||||
environment:
|
||||
- MEMVID_API_KEY=${MEMVID_API_KEY}
|
||||
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||
entrypoint: ["memvid"]
|
||||
command: ["stats", "my-memory.mv2"]
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
- Single-file `.mv2` storage
|
||||
- Semantic + lexical search
|
||||
- RAG question answering
|
||||
- PDF, DOCX, images, audio support
|
||||
|
||||
## Links
|
||||
|
||||
- Website: https://memvid.com
|
||||
- Docs: https://docs.memvid.com
|
||||
- GitHub: https://github.com/memvid/memvid
|
||||
@@ -0,0 +1,108 @@
|
||||
# Testing Memvid CLI Docker Image
|
||||
|
||||
## Quick Test
|
||||
|
||||
### 1. Build the Image
|
||||
|
||||
```bash
|
||||
cd docker/cli
|
||||
docker build -t memvid/cli:test .
|
||||
```
|
||||
|
||||
### 2. Test Basic Commands
|
||||
|
||||
```bash
|
||||
# Test help command
|
||||
docker run --rm memvid/cli:test --help
|
||||
|
||||
# Test version (if available)
|
||||
docker run --rm memvid/cli:test --version
|
||||
```
|
||||
|
||||
### 3. Test with Volume Mount
|
||||
|
||||
```bash
|
||||
# Create a test directory
|
||||
mkdir -p /tmp/memvid-test
|
||||
cd /tmp/memvid-test
|
||||
|
||||
# Create a test document
|
||||
echo "This is a test document about AI and machine learning." > test.txt
|
||||
|
||||
# Create a memory file
|
||||
docker run --rm \
|
||||
-v $(pwd):/data \
|
||||
memvid/cli:test create test-memory.mv2
|
||||
|
||||
# Add the document
|
||||
docker run --rm \
|
||||
-v $(pwd):/data \
|
||||
memvid/cli:test put test-memory.mv2 --input test.txt
|
||||
|
||||
# Search the memory
|
||||
docker run --rm \
|
||||
-v $(pwd):/data \
|
||||
memvid/cli:test find test-memory.mv2 --query "AI"
|
||||
|
||||
# View stats
|
||||
docker run --rm \
|
||||
-v $(pwd):/data \
|
||||
memvid/cli:test stats test-memory.mv2
|
||||
```
|
||||
|
||||
### 4. Test with API Keys (if needed)
|
||||
|
||||
```bash
|
||||
docker run --rm \
|
||||
-v $(pwd):/data \
|
||||
-e OPENAI_API_KEY="sk-..." \
|
||||
memvid/cli:test ask test-memory.mv2 "What is this about?" -m openai
|
||||
```
|
||||
|
||||
## Automated Testing
|
||||
|
||||
Run the test script:
|
||||
|
||||
```bash
|
||||
cd docker/cli
|
||||
./test.sh
|
||||
```
|
||||
|
||||
## Multi-Architecture Testing
|
||||
|
||||
To test multi-arch builds locally (requires buildx):
|
||||
|
||||
```bash
|
||||
# Create builder
|
||||
docker buildx create --name memvid-builder --use
|
||||
|
||||
# Build for specific platform
|
||||
docker buildx build \
|
||||
--platform linux/amd64 \
|
||||
--tag memvid/cli:test-amd64 \
|
||||
--load \
|
||||
.
|
||||
|
||||
# Test the amd64 image
|
||||
docker run --rm memvid/cli:test-amd64 --help
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Image not found
|
||||
Make sure you've built the image:
|
||||
```bash
|
||||
docker build -t memvid/cli:test docker/cli
|
||||
```
|
||||
|
||||
### Permission errors
|
||||
Ensure Docker has permission to access the mounted directory:
|
||||
```bash
|
||||
chmod 755 /path/to/your/directory
|
||||
```
|
||||
|
||||
### CLI not found
|
||||
Verify the npm package exists:
|
||||
```bash
|
||||
docker run --rm memvid/cli:test which memvid
|
||||
```
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
# Test script for Memvid CLI Docker image
|
||||
|
||||
set -e
|
||||
|
||||
IMAGE_NAME="memvid/cli:test"
|
||||
DOCKERFILE_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
echo "🐳 Building Docker image..."
|
||||
docker build -t "$IMAGE_NAME" "$DOCKERFILE_DIR"
|
||||
|
||||
echo ""
|
||||
echo "✅ Build complete! Testing basic commands..."
|
||||
echo ""
|
||||
|
||||
echo "1️⃣ Testing help command..."
|
||||
docker run --rm "$IMAGE_NAME" --help | head -5
|
||||
|
||||
echo ""
|
||||
echo "2️⃣ Testing version command..."
|
||||
docker run --rm "$IMAGE_NAME" --version || echo "Version command not available"
|
||||
|
||||
echo ""
|
||||
echo "3️⃣ Testing with volume mount (create test memory)..."
|
||||
TEST_DIR=$(mktemp -d)
|
||||
cd "$TEST_DIR"
|
||||
|
||||
# Create a test document
|
||||
echo "This is a test document about artificial intelligence and machine learning." > test.txt
|
||||
|
||||
docker run --rm \
|
||||
-v "$TEST_DIR":/data \
|
||||
"$IMAGE_NAME" create test-memory.mv2 || echo "Create command may require additional setup"
|
||||
|
||||
echo ""
|
||||
echo "🧹 Cleaning up test directory..."
|
||||
rm -rf "$TEST_DIR"
|
||||
|
||||
echo ""
|
||||
echo "✅ Basic tests complete!"
|
||||
echo ""
|
||||
echo "To test manually, run:"
|
||||
echo " docker run --rm $IMAGE_NAME --help"
|
||||
echo " docker run --rm -v \$(pwd):/data $IMAGE_NAME create my-memory.mv2"
|
||||
Reference in New Issue
Block a user