refactor(entrypoint): improve privilege dropping and config initialization
- Updated entrypoint.sh to initialize the on-disk config only if it does not already exist, preserving user edits across restarts. - Enhanced privilege dropping logic to ensure the container does not run as root if the privilege drop fails. - Clarified comments in Dockerfile and entrypoint.sh for better understanding of the privilege management process. - Updated README.md to include a note about persistent disks requiring a paid service on Render. - Adjusted render.yaml to clarify the Docker command behavior and added a note regarding auto-deploy settings.
This commit is contained in:
+5
-3
@@ -42,9 +42,11 @@ RUN useradd -m -u 1000 -s /bin/bash nanobot && \
|
||||
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
RUN sed -i 's/\r$//' /usr/local/bin/entrypoint.sh && chmod +x /usr/local/bin/entrypoint.sh
|
||||
|
||||
# Start as root so the Render entrypoint can chown the freshly-mounted
|
||||
# (root-owned) persistent disk, then drop to the non-root nanobot user via
|
||||
# setpriv (see entrypoint.sh). Local runs without a disk are unaffected.
|
||||
# Start as root so the entrypoint can chown the data dir (on Render, the
|
||||
# freshly-mounted root-owned persistent disk) before dropping to the non-root
|
||||
# nanobot user via setpriv. The entrypoint drops privileges on every root start
|
||||
# and fails closed if it cannot, so the agent never runs as root (see
|
||||
# entrypoint.sh).
|
||||
USER root
|
||||
ENV HOME=/home/nanobot
|
||||
# Ensure crash output reaches Render logs (app output is otherwise swallowed on
|
||||
|
||||
Reference in New Issue
Block a user