Skip to content

Containers: Docker and Podman share one compose file and image - #119

Open
grigio wants to merge 1 commit into
TannerMidd:mainfrom
grigio:podman
Open

grigio wants to merge 1 commit into
TannerMidd:mainfrom
grigio:podman

Conversation

@grigio

@grigio grigio commented Oct 21, 2026

Copy link
Copy Markdown

What changed

Runs Pi Pocket in a container, with the same setup for Docker and Podman.

  • docker/Dockerfile: thin node:24-bookworm-slim image. Installs the runtime packages plus Chromium (Browser panel), git, gh, ripgrep, fd, and cloudflared. Runs the app from source like the launcher does.
  • docker/entrypoint.sh: clears Chromium's stale Singleton* profile locks before start, so a recreated container can use the bind-mounted profile.
  • docker-compose.yml: publishes the port, sets LAN defaults, and bind-mounts the database, extensions, themes, Pi's folder, and the workspace from the host. Includes a healthcheck.
  • .env.example: ports, bind address, access mode, host folders, optional provider keys.
  • docs/docker.md, linked from README.md and docs/index.md: folders, permissions, access modes, and updates.
  • .gitignore, .prettierignore, eslint.config.js: ignore the compose ./data folder.

Why

The launcher assumes an interactive terminal. A container gives a headless, restartable server whose state lives on the host, so rebuilds and updates do not lose sign-ins, extensions, or work.

Tested

  • npx prettier --check on the Markdown/YAML/JS files (ignore/env/Dockerfile/shell have no parser).
  • npx eslint eslint.config.js.
  • No source files changed, so npm run check and npm test are unaffected.

The remaining working-tree changes (registerModelProvider in src/server/*, types/pocket.d.ts, and its reference docs) are a separate feature and are not part of this PR.

Run Pi Pocket in a container from a thin Node image with Chromium, git, gh,
ripgrep, fd, and cloudflared. The database, extensions, themes, Pi's folder,
and the workspace are bind-mounted from the host, so they survive rebuilds.

- docker/Dockerfile, entrypoint that clears stale Chromium profile locks
- docker-compose.yml with LAN defaults and healthcheck
- .env.example for ports, access mode, folders, and optional provider keys
- docs/docker.md, linked from the README and docs index
- .gitignore, .prettierignore, and eslint ignore the compose ./data folder

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant