Run the container as the host uid that owns the ./data bind mount
The image's own petal user (uid 10001) has no claim on a bind-mounted host directory, so SQLite came up with "unable to open database file (14)" and the container restart-looped. Run as the stack directory's owner instead of chowning ./data to 10001 -- the backup script gzips snapshots in place from the host, so that account needs write access to the same directory. Still non-root.
This commit is contained in:
@@ -24,6 +24,13 @@ services:
|
||||
image: petal:local
|
||||
container_name: petal
|
||||
restart: unless-stopped
|
||||
# ./data is a bind mount, so the image's own `petal` user (uid 10001) has no
|
||||
# claim on it — the host's ownership wins and the container can't open
|
||||
# petal.db. Run as whoever owns the stack directory instead. Keeping it the
|
||||
# host user (rather than chowning ./data to 10001) is deliberate: the backup
|
||||
# script gzips snapshots in place from the host, so the host account needs
|
||||
# write access to the same directory. Still never root.
|
||||
user: "${PETAL_UID:-1001}:${PETAL_GID:-1001}"
|
||||
env_file: .env
|
||||
environment:
|
||||
# Fixed by the image layout; kept here so they're visible at a glance.
|
||||
|
||||
Reference in New Issue
Block a user