feat(inngest): add Inngest service with configuration files, documentation, and Docker Compose setup

This commit is contained in:
Sun-ZhenXing
2026-02-10 11:17:06 +08:00
parent 1ba0401d90
commit 60d566d050
6 changed files with 430 additions and 0 deletions

99
src/inngest/README.md Normal file
View File

@@ -0,0 +1,99 @@
# Inngest
[English](./README.md) | [中文](./README.zh.md)
[Inngest](https://www.inngest.com/) is an open-source durable workflow engine for building reliable applications. It provides event-driven functions with automatic retries, scheduling, fan-out, and a built-in dashboard for monitoring and debugging.
## Services
- `inngest`: Inngest server with API, Dashboard, and Connect WebSocket gateway (ports 8288, 8289)
- `postgres`: PostgreSQL database for persistence
- `redis`: Redis for queue and run state management
## Quick Start
```bash
# Copy environment file
cp .env.example .env
# Start all services
docker compose up -d
```
After startup, access the Inngest Dashboard at `http://localhost:8288`.
## Environment Variables
| Variable Name | Description | Default Value |
| ---------------------------------- | ---------------------------------------------------- | ------------- |
| `GLOBAL_REGISTRY` | Global registry prefix for all images | `""` |
| `INNGEST_VERSION` | Inngest image version | `v1.16.3` |
| `INNGEST_EVENT_KEY` | Event key for authenticating event submissions (hex) | `deadbeef...` |
| `INNGEST_SIGNING_KEY` | Signing key for server-app communication (hex) | `01234567...` |
| `INNGEST_LOG_LEVEL` | Log level (trace, debug, info, warn, error) | `info` |
| `INNGEST_PORT_OVERRIDE` | Host port for API and Dashboard | `8288` |
| `INNGEST_GATEWAY_PORT_OVERRIDE` | Host port for Connect WebSocket gateway | `8289` |
| `INNGEST_PG_VERSION` | PostgreSQL image version | `17.6-alpine` |
| `INNGEST_PG_USER` | PostgreSQL username | `inngest` |
| `INNGEST_PG_PASSWORD` | PostgreSQL password | `inngest` |
| `INNGEST_PG_DB` | PostgreSQL database name | `inngest` |
| `INNGEST_REDIS_VERSION` | Redis image version | `7.4-alpine` |
| `TZ` | Timezone | `UTC` |
| `INNGEST_CPU_LIMIT` | CPU limit for Inngest | `1.00` |
| `INNGEST_CPU_RESERVATION` | CPU reservation for Inngest | `0.50` |
| `INNGEST_MEMORY_LIMIT` | Memory limit for Inngest | `512M` |
| `INNGEST_MEMORY_RESERVATION` | Memory reservation for Inngest | `256M` |
| `INNGEST_PG_CPU_LIMIT` | CPU limit for PostgreSQL | `0.50` |
| `INNGEST_PG_CPU_RESERVATION` | CPU reservation for PostgreSQL | `0.25` |
| `INNGEST_PG_MEMORY_LIMIT` | Memory limit for PostgreSQL | `256M` |
| `INNGEST_PG_MEMORY_RESERVATION` | Memory reservation for PostgreSQL | `128M` |
| `INNGEST_REDIS_CPU_LIMIT` | CPU limit for Redis | `0.50` |
| `INNGEST_REDIS_CPU_RESERVATION` | CPU reservation for Redis | `0.25` |
| `INNGEST_REDIS_MEMORY_LIMIT` | Memory limit for Redis | `128M` |
| `INNGEST_REDIS_MEMORY_RESERVATION` | Memory reservation for Redis | `64M` |
Please modify the `.env` file as needed for your use case.
## Volumes
- `inngest_pg_data`: Named volume for PostgreSQL data
- `inngest_redis_data`: Named volume for Redis data
## Configuring Inngest SDKs
To connect your application to a self-hosted Inngest server, set the following environment variables in your app:
```bash
INNGEST_EVENT_KEY=<your_event_key>
INNGEST_SIGNING_KEY=<your_signing_key>
INNGEST_DEV=0
INNGEST_BASE_URL=http://<inngest_host>:8288
```
For example, with a Node.js app:
```bash
INNGEST_EVENT_KEY=deadbeefcafebabe0123456789abcdef \
INNGEST_SIGNING_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef \
INNGEST_DEV=0 \
INNGEST_BASE_URL=http://localhost:8288 \
node ./server.js
```
## Security Notes
- **Change default keys before production use.** The event key and signing key must be valid hex strings with an even number of characters. Generate secure keys with `openssl rand -hex 32`.
- **Change the default PostgreSQL password** in `.env` before production deployment.
- The Inngest image supports both `amd64` and `arm64` architectures.
- Consider using TLS/SSL termination (e.g., via a reverse proxy) for production deployments.
## References
- [Official Documentation](https://www.inngest.com/docs)
- [Self-Hosting Guide](https://www.inngest.com/docs/self-hosting)
- [GitHub Repository](https://github.com/inngest/inngest)
- [SDK Documentation](https://www.inngest.com/docs/sdk/overview)
## License
Inngest is source-available under the [Elastic License 2.0 (ELv2)](https://github.com/inngest/inngest/blob/main/LICENSE.md) with some components under [Apache-2.0](https://github.com/inngest/inngest/blob/main/LICENSE-APACHE.md).