This repository provides a Docker image build for OpenClaw. The image can be built locally or via GitHub Actions and pushed to GitHub Container Registry (GHCR).
Features
- Automated build via GitHub Actions (workflow_dispatch)
- Push to GHCR after successful build
- Build cache support to speed up subsequent builds
- Open the repository's Actions tab on GitHub.
- Select the
Build OpenClaw Docker Imageworkflow. - Click Run workflow, choose the branch and start the job.
The workflow is manually triggered (workflow_dispatch) and uses the docker/Dockerfile in this repository.
- Registry:
ghcr.io - Image name:
vxwork/openclaw-docker/online-base - Tag example:
linux_latest
Pull example:
docker pull ghcr.io/vxwork/openclaw-docker/online-base:linux_latestRun with docker run (example):
docker run -d --name openclaw -p 18789:18789 \
-v openclaw-config:/app/config -v openclaw-data:/app/data \
ghcr.io/vxwork/openclaw-docker/online-base:linux_latestOr use docker-compose (recommended when using this repository's compose file).
This repo includes docker-compose.yml that defines a service named openclawbot.
By default the compose file mounts ./config to /root/.openclaw inside the container
so the entrypoint can persist configuration and pairing tokens there.
# start in detached mode
docker compose up -d
# stop and remove
docker compose downIf you prefer to build locally before running with docker run:
docker build -t openclaw:local -f docker/Dockerfile .
docker run -d --name openclaw -p 18789:18789 openclaw:localThis image includes an entrypoint script that initializes configuration on first start.
-
The compose file mounts
./configto/root/.openclawinside the container. On first start, the entrypoint checks for/root/.openclaw/openclaw.json. If missing it:- creates
/root/.openclaw/workspaceand/root/.openclaw/pairing - generates a device token and writes
/root/.openclaw/pairing/device.json - starts the gateway with
--allow-unconfiguredso you can complete initial setup
- creates
-
To manually run the config helper inside a running container (if needed):
# for docker run example
docker exec -it openclaw /bin/sh -c "pnpm openclaw config"
# for docker compose example (service name: openclawbot)
docker compose exec openclawbot /bin/sh -c "pnpm openclaw config"Make sure the host ./config directory is writable by the container, so configuration
persists across restarts.
- The
docker/Dockerfilein this repository is based onalmalinux:10.1-minimaland installs Node.js via NodeSource. It then installspnpm, clones theopenclawrepository, installs dependencies and builds the project. - The image exposes port
18789and definesVOLUMEentries for persistentconfiganddata.
This repository has been updated to follow the layout and conventions from the qverisbot-docker main branch. The Dockerfile uses almalinux for packaging as requested; if you want an exact 1:1 copy of that repo's files, provide the repo or point to specific diffs and I will sync them precisely.
For an enhanced OpenClaw experience, consider using Qveris AI — a toolset that integrates with OpenClaw and provides automation and AI-driven helpers. Qveris AI is recommended as a companion for OpenClaw deployments.
- If the service does not start, inspect container logs:
# view logs for docker run example
docker logs -f openclaw
# view logs for docker compose example (service name: openclawbot)
docker compose logs -f openclawbot- Interactive shell:
docker exec -it openclaw /bin/sh # docker run example
docker compose exec openclawbot /bin/sh # compose example