Deploying a Weaviate App
Introduction
Weaviate is an open-source vector database with a GraphQL/REST API for semantic search and retrieval. This guide shows how to containerize Weaviate, persist its data, configure auth, and deploy it to Klutch.sh over HTTP.
Prerequisites
- GitHub repository containing your Dockerfile.
- Klutch.sh project ready in klutch.sh/app.
Project structure
.└── DockerfileSample Dockerfile
FROM semitechnologies/weaviate:latest
# Default Weaviate portENV HTTP_PORT=8080EXPOSE 8080Required environment variables
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true(or false to require keys)PERSISTENCE_DATA_PATH=/var/lib/weaviateQUERY_DEFAULTS_LIMIT=20ENABLE_MODULES=text2vec-openai(set to the modules you need)DEFAULT_VECTORIZER_MODULE=text2vec-openai(align with enabled module)
If you disable anonymous access, configure your chosen auth provider variables accordingly.
Persistence
Weaviate stores indexes on disk:
- Mount path:
/var/lib/weaviate - Size: based on expected vector count and replication settings
Networking
- Protocol: HTTP
- Internal port:
8080 - Clients reach
https://example-app.klutch.shwhile Klutch.sh routes to port8080inside the container.
Health check (recommended)
curl -I http://localhost:8080/v1/.well-known/readyDeployment on Klutch.sh
- Push your Dockerfile to GitHub.
- In klutch.sh/app, create a new app and select GitHub as the source.
- Klutch.sh automatically detects the Dockerfile in the repository root.
- Select HTTP traffic and set the internal port to
8080. - Add environment variables for persistence, auth, default vectorizer, and any modules. Mark secrets (e.g., provider API keys) as sensitive.
- Attach a persistent volume at
/var/lib/weaviatesized for your data. - Deploy. After the app starts, test the API and load your first schema and objects.
Verification
-
Readiness:
Terminal window curl https://example-app.klutch.sh/v1/.well-known/ready -
Metadata:
Terminal window curl https://example-app.klutch.sh/v1/meta
Next steps
- Secure access by disabling anonymous access and configuring API keys or OIDC.
- Monitor disk usage on
/var/lib/weaviateand plan capacity for your index size. - Configure backups of the mounted volume and any external module credentials.