← ClaudeAtlas

deploy-docker-composelisted

Run the Doppl server as a Docker compose stack (server + Postgres) on any Docker host — your laptop, a VPS, EC2 by hand, or as the base layer of any container-platform deploy. Invoke when the user wants to build the image, bring up the compose stack, debug the stack on a host they already have, or extend the stack for a new platform.
sarptandoven/doppl-multiplayer · ★ 0 · DevOps & Infrastructure · score 65
Install: claude install-skill sarptandoven/doppl-multiplayer
# Run Doppl as a Docker compose stack The `Dockerfile` here is the single image used by every non-Databricks deploy path. It bundles the FastAPI server + a pre-built web SPA into a slim Python runtime. The compose file pairs it with Postgres and exposes the server on port 8000. The image is "external runner only" — it does NOT include `tmux`, the harness SDKs, or anything that would let it execute agent code in-process. Runners live on user machines and dial in via the WebSocket tunnel. This keeps the image small (~250 MB), the security boundary clean (server doesn't execute user code), and the deploy shape consistent across hosts. The same Dockerfile also has a `host` target — the prebaked Doppl HOST image that remote sandboxes boot from (`doppl sandbox create --provider modal --server https://your-host`, server-launched managed hosts). It is the inverse profile: full omnigent install plus git + tmux, no SPA, no psycopg, no server entrypoint. Neither image is published anywhere: build and push both yourself (see the "Host image" section in `README.md` here, and `../README.md` § Container images). ## TL;DR — bring it up ```bash cd deploy/docker cp .env.example .env # edit POSTGRES_PASSWORD at minimum docker compose up -d --build docker compose logs -f omnigent # Ctrl-C when you see "Uvicorn running" ``` Server is on http://localhost:8000. ## Files | | | |---|---| | `Dockerfile` | Multi-stage build with two final targets. `web-builder` (node:22) runs `npm