> Part of the walkerOS documentation. Project overview and full index: <https://www.walkeros.io/llms.txt>

# Docker

## Try the demo[​](#try-the-demo "Direct link to Try the demo")

```
docker run -p 8080:8080 -e BUNDLE=/app/demos/demo-collect.mjs walkeros/flow:latest
```

Output:

```
INFO [runner] Loading flow from /app/demos/demo-collect.mjs
INFO [runner] Flow running
INFO [runner] Port: 8080
```

Test it:

```
curl -X POST http://localhost:8080/collect \
  -H "Content-Type: application/json" \
  -d '{"name":"page view","data":{"title":"Test Page"}}'
```

## HTTP event collection[​](#http-event-collection "Direct link to HTTP event collection")

```
docker run -d -p 8080:8080 \
  -e BUNDLE=/app/demos/demo-collect.mjs \
  walkeros/flow

# Send event
curl -X POST http://localhost:8080/collect \
  -H "Content-Type: application/json" \
  -d '{"name":"page view","data":{"title":"Home"}}'
```

## Built-in demos[​](#built-in-demos "Direct link to Built-in demos")

The Docker image includes demo bundles at `/app/demos/`:

* `demo-collect.mjs` - Server collector demo
* `demo-serve.js` - Web bundle demo

## Custom flow[​](#custom-flow "Direct link to Custom flow")

### Build your flow[​](#build-your-flow "Direct link to Build your flow")

Docker runtime requires **pre-built bundles**, not JSON configs.

**Workflow:**

1. Create a [flow.json](https://www.walkeros.io/docs/getting-started/flow.md) config
2. Bundle with CLI: `walkeros bundle flow.json --output flow.mjs`
3. Run in Docker: `docker run -e BUNDLE=/app/flow.mjs`

### Build custom image[​](#build-custom-image "Direct link to Build custom image")

```
FROM walkeros/flow:latest
COPY flow.mjs /app/flow.mjs
ENV BUNDLE=/app/flow.mjs
```

```
docker build -t my-walker .
docker run -p 8080:8080 my-walker
```

## Docker compose[​](#docker-compose "Direct link to Docker compose")

```
version: '3.8'

services:
  walkeros:
    image: walkeros/flow:latest
    environment:
      BUNDLE: /app/demos/demo-collect.mjs
    ports:
      - '8080:8080'
    restart: unless-stopped
```

## Environment variables[​](#environment-variables "Direct link to Environment variables")

| Variable     | Description                   | Default        |
| ------------ | ----------------------------- | -------------- |
| `BUNDLE`     | Path to pre-bundled flow file | Required       |
| `PORT`       | Server port                   | 8080           |
| `HOST`       | Server host                   | 0.0.0.0        |
| `SERVE_NAME` | Filename in URL (serve mode)  | walker.js      |
| `SERVE_PATH` | URL directory (serve mode)    | (empty = root) |

## Next steps[​](#next-steps "Direct link to Next steps")

* [Available sources](https://www.walkeros.io/docs/sources.md)
* [Available destinations](https://www.walkeros.io/docs/destinations.md)
* [Docker Package README](https://github.com/elbwalker/walkerOS/tree/main/packages/docker)
