v0.11.0

Deployment Records

Last updated

This page explains the deployment info and operation records the CLI sends to the API server on every operation, and how the dismiss flag changes.

When the CLI Reports

Function Called API On failure
removePod() After up clears old containers, at the start of clear, after down POST /api/pod/update/:uid with body {"dismiss": 1} Ignored
upsertPod() At the end of up POST /api/pod/upsert Returns an error; up fails
recordPod() At the end of every command, and during sync POST /api/pod/record/insert Ignored

The CLI always targets http://localhost:8080. If the API server is down, up reports failed to upsert pod at the last step even though the remote containers are already running.

Record Content

Values of records.content:

Value Source
sync Remote folder was empty; first sync
overwrite Overwrite confirmed after the diff preview
up up finished
clear clear finished
down / ps / logs / restart / exec / build A passthrough command finished; the value is the command name

Each record also stores the hostname and first non-loopback IPv4 of the machine running the CLI. records.pod_id is resolved from uid to pods.id and is NOT NULL; the sync record of a first deployment happens before the pods row exists, so the lookup finds nothing and the insert fails silently.

dismiss State

stateDiagram-v2
    [*] --> Active: up (upsert)
    Active --> Removed: down / clear / cleanup before re-up
    Removed --> Active: up (upsert resets dismiss=0)
    Removed --> [*]

GET /api/pod/list returns only deployments with dismiss = 0. The CLI writes starting to status, and nothing currently updates it to another value.

Database Location

Condition Path
DB_PATH set The value of DB_PATH
/.dockerenv exists /data/database.db
Otherwise ~/.podrun/database.db; the folder is created when missing

See HTTP API for the table schema.

中文