Skip to content

Commit ce05867

Browse files
committed
Dockerfile: use COPY --chmod=755 instead of RUN chmod
COPY --chmod=755 sets executable permission at copy time, which works as root during build. RUN chmod as non-root user fails on root-owned directories (/usr/local/bin, /opt/devstack, /opt/pi-support).
1 parent af9ea21 commit ce05867

1 file changed

Lines changed: 10 additions & 19 deletions

File tree

Dockerfile

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -134,34 +134,25 @@ FROM base AS cli
134134

135135
# ── Support utilities (moved from config/support/ to devstack/support/) ──
136136
# Copied to /opt/pi-support/ — used by start.sh at runtime
137-
COPY support/browser-state-cleanup.sh /opt/pi-support/browser-state-cleanup.sh
137+
COPY --chmod=755 support/browser-state-cleanup.sh /opt/pi-support/browser-state-cleanup.sh
138138
COPY support/browser-validate.ts /opt/pi-support/browser-validate.ts
139139
COPY support/session-uuid.ts /opt/pi-support/session-uuid.ts
140140
COPY support/validate-subagent-output.ts /opt/pi-support/validate-subagent-output.ts
141141
COPY support/config/ /opt/pi-support/config/
142142
COPY support/docs/ /opt/pi-support/docs/
143143
COPY support/schemas/ /opt/pi-support/schemas/
144-
COPY support/lpb-config /opt/pi-support/lpb-config
145-
RUN chmod +x /opt/pi-support/browser-state-cleanup.sh \
146-
&& chmod +x /opt/pi-support/lpb-config
144+
COPY --chmod=755 support/lpb-config /opt/pi-support/lpb-config
147145

148146
# ── Devstack deployment scripts ──
149-
COPY support/install-browser.sh /opt/devstack/install-browser.sh
150-
COPY support/validate.sh /opt/devstack/validate.sh
151-
COPY support/install-openspec.sh /opt/pi-support/install-openspec.sh
152-
COPY support/start.sh /opt/devstack/start.sh
147+
COPY --chmod=755 support/install-browser.sh /opt/devstack/install-browser.sh
148+
COPY --chmod=755 support/validate.sh /opt/devstack/validate.sh
149+
COPY --chmod=755 support/install-openspec.sh /opt/pi-support/install-openspec.sh
150+
COPY --chmod=755 support/start.sh /opt/devstack/start.sh
153151
COPY lpb.conf.env /opt/devstack/lpb.conf.env
154-
COPY support/entrypoint-cli.sh /opt/devstack/entrypoint-cli.sh
155-
156-
# Copy to /usr/local/bin/ for easy access (avoid symlinks — CI has issues with ln -sf)
157-
COPY support/lpb-config /usr/local/bin/lpb-config
158-
RUN chmod +x /opt/devstack/install-browser.sh \
159-
/opt/devstack/validate.sh \
160-
/opt/devstack/start.sh \
161-
/opt/devstack/entrypoint-cli.sh \
162-
/opt/pi-support/install-openspec.sh \
163-
/opt/pi-support/lpb-config \
164-
/usr/local/bin/lpb-config
152+
COPY --chmod=755 support/entrypoint-cli.sh /opt/devstack/entrypoint-cli.sh
153+
154+
# Copy lpb-config to PATH (avoid symlinks — chmod fails as non-root user)
155+
COPY --chmod=755 support/lpb-config /usr/local/bin/lpb-config
165156

166157
RUN mkdir -p /home/lpb/.agent-browser/sessions && chown -R 1000:1000 /home/lpb/.agent-browser
167158

0 commit comments

Comments
 (0)