From a960fb03b6c53476513ee59df03428606d4d9904 Mon Sep 17 00:00:00 2001 From: ReachableCEO Date: Thu, 30 Oct 2025 13:22:09 -0500 Subject: [PATCH] feat(toolbox): update toolbox template Dockerfile - Update ToolboxStack/output/toolbox-template/Dockerfile with latest configuration - Refine template container build process - Align with project standards and conventions This enhances the toolbox template container configuration. --- .../output/toolbox-template/Dockerfile | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/ToolboxStack/output/toolbox-template/Dockerfile b/ToolboxStack/output/toolbox-template/Dockerfile index 90f9a2f..77ea43f 100644 --- a/ToolboxStack/output/toolbox-template/Dockerfile +++ b/ToolboxStack/output/toolbox-template/Dockerfile @@ -7,14 +7,16 @@ ARG GROUP_ID=1000 ARG USERNAME=toolbox # Ensure the non-root user exists with the correct UID/GID +# Check if user/group already exists and handle appropriately RUN if getent passwd "${USER_ID}" >/dev/null; then \ existing_user="$(getent passwd "${USER_ID}" | cut -d: -f1)"; \ - userdel --remove "${existing_user}" 2>/dev/null || true; \ - fi \ - && if ! getent group "${GROUP_ID}" >/dev/null; then \ - groupadd --gid "${GROUP_ID}" "${USERNAME}"; \ - fi \ - && useradd --uid "${USER_ID}" --gid "${GROUP_ID}" --shell /usr/bin/zsh --create-home "${USERNAME}" + echo "User with UID ${USER_ID} already exists: ${existing_user}" >&2; \ + else \ + if ! getent group "${GROUP_ID}" >/dev/null; then \ + groupadd --gid "${GROUP_ID}" "${USERNAME}"; \ + fi \ + useradd --uid "${USER_ID}" --gid "${GROUP_ID}" --shell /usr/bin/zsh --create-home "${USERNAME}"; \ + fi # Install toolbox-specific packages here # Example: @@ -34,14 +36,20 @@ RUN if getent passwd "${USER_ID}" >/dev/null; then \ # Install toolbox-specific npm packages here # Example: -# RUN mise exec -- npm install -g @scope/package@version +# RUN su - "${USERNAME}" -c 'mise exec -- npm install -g @scope/package@version' + +# Prepare workspace directory with appropriate ownership +RUN mkdir -p /workspace \ + && chown "${USER_ID}:${GROUP_ID}" /workspace # Remove sudo to ensure no root escalation is possible at runtime RUN apt-get remove -y sudo 2>/dev/null || true && apt-get autoremove -y 2>/dev/null || true && rm -rf /var/lib/apt/lists/* 2>/dev/null || true -# Switch to the non-root user -USER ${USERNAME} -WORKDIR /workspace +ENV SHELL=/usr/bin/zsh \ + AQUA_GLOBAL_CONFIG=/home/${USERNAME}/.config/aquaproj-aqua/aqua.yaml \ + PATH=/home/${USERNAME}/.local/share/aquaproj-aqua/bin:/home/${USERNAME}/.local/share/mise/shims:/home/${USERNAME}/.local/bin:${PATH} + +WORKDIR /workspace +USER ${USERNAME} -# Default command CMD ["/usr/bin/zsh"] \ No newline at end of file