File tree Expand file tree Collapse file tree 2 files changed +34
-4
lines changed
Expand file tree Collapse file tree 2 files changed +34
-4
lines changed Original file line number Diff line number Diff line change @@ -5,10 +5,11 @@ FROM node:24-bookworm-slim
55# Create deploystack user with home directory
66RUN useradd -m -d /opt/deploystack -s /bin/bash deploystack
77
8- # Install only essential runtime dependencies
8+ # Install essential runtime dependencies including gosu for privilege dropping
99RUN apt-get update && \
1010 apt-get install -y --no-install-recommends \
1111 ca-certificates \
12+ gosu \
1213 && rm -rf /var/lib/apt/lists/*
1314
1415# Create mcp-cache base directory with proper ownership
@@ -32,6 +33,10 @@ RUN npm install --omit=dev --no-package-lock
3233# Copy pre-built files
3334COPY services/satellite/dist ./dist
3435
36+ # Copy entrypoint script
37+ COPY services/satellite/scripts/docker-entrypoint.sh /usr/local/bin/
38+ RUN chmod +x /usr/local/bin/docker-entrypoint.sh
39+
3540# Create a default .env file with development defaults
3641# NODE_ENV=development ensures no nsjail isolation is used
3742RUN echo "NODE_ENV=development" > .env && \
@@ -40,7 +45,6 @@ RUN echo "NODE_ENV=development" > .env && \
4045
4146EXPOSE 3001
4247
43- # Run as deploystack user
44- USER deploystack
45-
48+ # Use entrypoint script that fixes permissions and drops privileges
49+ ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh" ]
4650CMD ["node" , "--env-file=.env" , "dist/index.js" ]
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+ set -e
3+
4+ # If running as root, fix permissions before dropping privileges
5+ if [ " $( id -u) " = " 0" ]; then
6+ # Fix persistent_data directory permissions for Docker volume
7+ if [ -d " /app/persistent_data" ]; then
8+ echo " Fixing persistent_data directory permissions for deploystack user..."
9+ chown -R deploystack:deploystack /app/persistent_data
10+ chmod 755 /app/persistent_data
11+ echo " ✓ Persistent data permissions fixed"
12+ fi
13+
14+ # Ensure all /app files are owned by deploystack user
15+ # This fixes any files that were created as root during build
16+ echo " Ensuring /app files are owned by deploystack user..."
17+ chown -R deploystack:deploystack /app
18+ echo " ✓ App files permissions fixed"
19+
20+ # Drop privileges to deploystack user and execute command
21+ echo " Starting satellite as deploystack user..."
22+ exec gosu deploystack " $@ "
23+ else
24+ # Already running as non-root user, just execute
25+ exec " $@ "
26+ fi
You can’t perform that action at this time.
0 commit comments