@@ -188,24 +188,24 @@ RUN apk add --no-cache git ca-certificates bind-tools tini jansson wget supervis
188188ARG UID=1500
189189ARG GID=1500
190190
191- # To run as non-root, the user must be part of postgres, redis and node groups
191+ # Always create the non-root user to support runtime user switching
192+ # The container can be run as root (default) or as sourcebot user using docker run --user
192193RUN addgroup -g $GID sourcebot && \
193194 adduser -D -u $UID -h /app -S sourcebot && \
194195 adduser sourcebot postgres && \
195196 adduser sourcebot redis && \
196197 adduser sourcebot node && \
197- chown -R sourcebot /app && \
198198 mkdir /var/log/sourcebot && \
199199 chown sourcebot /var/log/sourcebot
200200
201- COPY --chown=sourcebot:sourcebot package.json yarn.lock* .yarnrc.yml public.pem ./
202- COPY --chown=sourcebot:sourcebot .yarn ./.yarn
201+ COPY package.json yarn.lock* .yarnrc.yml public.pem ./
202+ COPY .yarn ./.yarn
203203
204204# Configure zoekt
205- COPY --chown=sourcebot:sourcebot vendor/zoekt/install-ctags-alpine.sh .
205+ COPY vendor/zoekt/install-ctags-alpine.sh .
206206RUN ./install-ctags-alpine.sh && rm install-ctags-alpine.sh
207- RUN mkdir -p ${DATA_CACHE_DIR} && chown -R sourcebot ${DATA_CACHE_DIR}
208- COPY --chown=sourcebot:sourcebot -- from=zoekt-builder \
207+ RUN mkdir -p ${DATA_CACHE_DIR}
208+ COPY --from=zoekt-builder \
209209/cmd/zoekt-git-index \
210210/cmd/zoekt-indexserver \
211211/cmd/zoekt-mirror-github \
@@ -218,18 +218,17 @@ COPY --chown=sourcebot:sourcebot --from=zoekt-builder \
218218/usr/local/bin/
219219
220220# Copy all of the things
221- COPY --chown=sourcebot:sourcebot --from=web-builder /app/packages/web/public ./packages/web/public
222- COPY --chown=sourcebot:sourcebot --from=web-builder /app/packages/web/.next/standalone ./
223- COPY --chown=sourcebot:sourcebot --from=web-builder /app/packages/web/.next/static ./packages/web/.next/static
224-
225- COPY --chown=sourcebot:sourcebot --from=backend-builder /app/node_modules ./node_modules
226- COPY --chown=sourcebot:sourcebot --from=backend-builder /app/packages/backend ./packages/backend
221+ COPY --from=web-builder /app/packages/web/public ./packages/web/public
222+ COPY --from=web-builder /app/packages/web/.next/standalone ./
223+ COPY --from=web-builder /app/packages/web/.next/static ./packages/web/.next/static
227224
228- COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/node_modules ./node_modules
229- COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/packages/db ./packages/db
230- COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/packages/schemas ./packages/schemas
231- COPY --chown=sourcebot:sourcebot --from=shared-libs-builder /app/packages/shared ./packages/shared
225+ COPY --from=backend-builder /app/node_modules ./node_modules
226+ COPY --from=backend-builder /app/packages/backend ./packages/backend
232227
228+ COPY --from=shared-libs-builder /app/node_modules ./node_modules
229+ COPY --from=shared-libs-builder /app/packages/db ./packages/db
230+ COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas
231+ COPY --from=shared-libs-builder /app/packages/shared ./packages/shared
233232
234233# Fixes git "dubious ownership" issues when the volume is mounted with different permissions to the container.
235234RUN git config --global safe.directory "*"
@@ -239,14 +238,17 @@ RUN mkdir -p /run/postgresql && \
239238 chown -R postgres:postgres /run/postgresql && \
240239 chmod 775 /run/postgresql
241240
242- COPY --chown=sourcebot:sourcebot supervisord.conf /etc/supervisor/conf.d/supervisord.conf
243- COPY --chown=sourcebot:sourcebot prefix-output.sh ./prefix-output.sh
241+ # Make app directory accessible to both root and sourcebot user
242+ RUN chown -R sourcebot:sourcebot /app
243+
244+ COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
245+ COPY prefix-output.sh ./prefix-output.sh
244246RUN chmod +x ./prefix-output.sh
245- COPY --chown=sourcebot:sourcebot entrypoint.sh ./entrypoint.sh
247+ COPY entrypoint.sh ./entrypoint.sh
246248RUN chmod +x ./entrypoint.sh
247249
248-
249- USER sourcebot
250+ # Default to root user, but can be overridden at runtime with --user flag
251+ # No USER directive = runs as root by default
250252
251253EXPOSE 3000
252254ENV PORT=3000
0 commit comments