https://github.com/jacoblincool/selflare
Compile Cloudflare Workers to Cap'n Proto and deliver them as minimalist Docker images.
https://github.com/jacoblincool/selflare
capnproto cloudflare-workers docker
Last synced: about 1 year ago
JSON representation
Compile Cloudflare Workers to Cap'n Proto and deliver them as minimalist Docker images.
- Host: GitHub
- URL: https://github.com/jacoblincool/selflare
- Owner: JacobLinCool
- License: mit
- Created: 2024-03-03T10:51:32.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-06T04:16:40.000Z (about 1 year ago)
- Last Synced: 2025-05-06T05:24:35.717Z (about 1 year ago)
- Topics: capnproto, cloudflare-workers, docker
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/selflare
- Size: 170 KB
- Stars: 28
- Watchers: 3
- Forks: 4
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Selflare
Compile Cloudflare Workers to Cap'n Proto and deliver them as minimalist Docker images.
## Features
- [x] Cloudflare Worker
- [x] Cloudflare KV
- [x] Cloudflare D1
- [x] Cloudflare R2
- [x] Cloudflare DO
- [x] Cache API
- [ ] Cloudflare Vectorize
- [x] Environment Variables
## Usage
Install the CLI with `npm i -g selflare` and run the following commands in the directory of your worker:
```bash
selflare compile # Compile the worker to Cap'n Proto
selflare docker # Generate Dockerfile and docker-compose.yml
docker compose up # Run the worker
```
## Environment Variables
All the environment variables defined in `[vars]` section of the `wrangler.toml` file will be replaced by the corresponding environment variables in the Docker container.
You can simply set the environment variables in the `docker-compose.yml` file like this:
```yaml
version: "3.8"
services:
worker:
build: .
image: worker
volumes:
- ./.storage/cache:/worker/cache
- ./.storage/kv:/worker/kv
- ./.storage/d1:/worker/d1
- ./.storage/r2:/worker/r2
ports:
- "8080:8080"
environment:
- SOME_TOKEN=I_AM_A_TOKEN
```
The image is based on [`jacoblincool/workerd`](https://github.com/JacobLinCool/workerd-docker) which has a size of 35MB (compressed) and supports both `amd64` and `arm64` architectures.