Browse Source

Docker permissions fix:
- Add user directive to docker-compose.yml using PUID/PGID env vars
- Allows container to run as host user, fixing permission issues with
bind-mounted volumes (e.g., ./virtual_printer)
- Add chmod 777 to /app/data and /app/logs in Dockerfile for non-root compatibility
- Usage: PUID=$(id -u) PGID=$(id -g) docker compose up -d

Note: Existing named volumes (bambuddy_logs, bambuddy_data) created by previous
root containers may need to be removed or have permissions fixed manually.

maziggy 3 months ago
parent
commit
ff55e63caa
2 changed files with 5 additions and 1 deletions
  1. 2 1
      Dockerfile
  2. 3 0
      docker-compose.yml

+ 2 - 1
Dockerfile

@@ -37,7 +37,8 @@ COPY backend/ ./backend/
 COPY --from=frontend-builder /app/static ./static
 
 # Create data directory for persistent storage
-RUN mkdir -p /app/data /app/logs
+# chmod 777 allows running as non-root user (e.g., with docker compose user: directive)
+RUN mkdir -p /app/data /app/logs && chmod 777 /app/data /app/logs
 
 # Environment variables
 ENV PYTHONUNBUFFERED=1

+ 3 - 0
docker-compose.yml

@@ -6,6 +6,9 @@ services:
     #   docker compose up -d          → pulls pre-built image from ghcr.io
     #   docker compose up -d --build  → builds locally from source
     container_name: bambuddy
+    # Run as current user to avoid permission issues with mounted volumes
+    # Override with: PUID=$(id -u) PGID=$(id -g) docker compose up -d
+    user: "${PUID:-1000}:${PGID:-1000}"
     #
     # LINUX: Use host mode for printer discovery and camera streaming
     network_mode: host