# Docker Local Testing This page is a practical checklist for testing the current Docker setup locally. It covers two paths: - the default managed-config flow, where the container owns `/data/.config/pinchtab/config.json` - the explicit-config flow, where you mount your own `config.json` and set `PINCHTAB_CONFIG` ## Managed Config Flow Build and start the local Compose service: ```bash docker compose up --build -d docker compose logs -f pinchtab ``` Inspect the effective config path and persisted config: ```bash docker exec pinchtab pinchtab config path docker exec pinchtab sh -lc 'cat /data/.config/pinchtab/config.json' ``` Expected results: - the config path is `/data/.config/pinchtab/config.json` - `server.bind` in the persisted config remains `127.0.0.1` - a token is present if one was generated on first boot or passed in Verify the config bind address: ```bash docker exec pinchtab pinchtab config get server.bind ``` Expected result: `0.0.0.0` (set by entrypoint on first boot) Verify persistence across restart: ```bash docker compose down docker compose up -d docker exec pinchtab sh -lc 'cat /data/.config/pinchtab/config.json' ``` ## Explicit `PINCHTAB_CONFIG` Flow Create a local config file, for example `./tmp/config.json`: ```json { "server": { "bind": "0.0.0.0", "port": "9867", "token": "local-test-token" }, "browser": { "extraFlags": "--no-sandbox --disable-gpu" } } ``` Run the container with that config mounted read-only: ```bash docker run --rm -d \ --name pinchtab-test \ -p 127.0.0.1:9867:9867 \ -e PINCHTAB_CONFIG=/config/config.json \ -v "$PWD/tmp/config.json:/config/config.json:ro" \ -v pinchtab-data:/data \ --shm-size=2g \ pinchtab/pinchtab ``` Verify the explicit config path and auth: ```bash docker exec pinchtab-test pinchtab config path docker exec pinchtab-test sh -lc 'cat /config/config.json' curl -H 'Authorization: Bearer local-test-token' http://127.0.0.1:9867/health ``` Expected results: - `pinchtab config path` reports `/config/config.json` - the mounted file is used as-is - the container entrypoint does not rewrite the custom config ## What To Check When Something Fails Container logs: ```bash docker logs pinchtab docker logs pinchtab-test ``` Config path: ```bash docker exec pinchtab pinchtab config path docker exec pinchtab-test pinchtab config path ``` Persisted config content: ```bash docker exec pinchtab sh -lc 'cat /data/.config/pinchtab/config.json' ``` ## Current Caveat The development Docker path may still need explicit Chrome flags on some hosts. If Chromium fails to launch in the local development image, add: ```json { "browser": { "extraFlags": "--no-sandbox --disable-gpu" } } ``` The release image path backfills those flags into the managed config automatically.