Skip to content

Commit 8bb9e0e

Browse files
mohsin-wiserclaude
andcommitted
fix(devcontainer): create code-server directories directly in entrypoint
The .local/share directory is bind-mounted and owned by root, preventing the install command from creating subdirectories with correct ownership. Solution: Create subdirectories as root first, then chown them to vscode. This works even when parent directories are bind-mounted volumes. Fixes code-server EACCES errors when trying to create data directory. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 7db7577 commit 8bb9e0e

2 files changed

Lines changed: 15 additions & 13 deletions

File tree

.devcontainer/docker-compose.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
services:
2020
devcontainer:
2121
# Use prebuilt image (default for fast startup)
22-
image: ghcr.io/simpleaccounts/simpleaccounts-uae-devcontainer:latest
22+
# image: ghcr.io/simpleaccounts/simpleaccounts-uae-devcontainer:latest
2323
# For local development/testing, comment out 'image:' above and uncomment below:
24-
# build:
25-
# context: ..
26-
# dockerfile: .devcontainer/Dockerfile
24+
build:
25+
context: ..
26+
dockerfile: .devcontainer/Dockerfile
2727
env_file:
2828
# Database and application configuration (REQUIRED)
2929
- path: .env

.devcontainer/entrypoint.sh

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,18 @@ for dir in /home/vscode/.claude /home/vscode/.gemini /home/vscode/.codex \
3434
done
3535

3636
# NOW create subdirectories (parent dirs exist)
37-
# Create them with proper ownership using install command
38-
install -d -o vscode -g vscode /home/vscode/.local/share/code-server 2>/dev/null || mkdir -p /home/vscode/.local/share/code-server 2>/dev/null || true
39-
install -d -o vscode -g vscode /home/vscode/.config/code-server 2>/dev/null || mkdir -p /home/vscode/.config/code-server 2>/dev/null || true
40-
install -d -o vscode -g vscode /home/vscode/.vscode-server/bin 2>/dev/null || mkdir -p /home/vscode/.vscode-server/bin 2>/dev/null || true
41-
install -d -o vscode -g vscode /home/vscode/.vscode-server/extensions 2>/dev/null || mkdir -p /home/vscode/.vscode-server/extensions 2>/dev/null || true
37+
# For bind-mounted volumes (like .local), we need to create subdirectories as root
38+
# then chown them, since the parent directory is owned by root
39+
mkdir -p /home/vscode/.local/share/code-server 2>/dev/null || true
40+
mkdir -p /home/vscode/.config/code-server 2>/dev/null || true
41+
mkdir -p /home/vscode/.vscode-server/bin 2>/dev/null || true
42+
mkdir -p /home/vscode/.vscode-server/extensions 2>/dev/null || true
4243

43-
# Fix ownership of created directories (ignore errors for bind-mounts)
44-
chown -R vscode:vscode /home/vscode/.local 2>/dev/null || true
45-
chown -R vscode:vscode /home/vscode/.config 2>/dev/null || true
46-
chown -R vscode:vscode /home/vscode/.vscode-server 2>/dev/null || true
44+
# Fix ownership of subdirectories we created (not the bind-mounted parents)
45+
chown -R vscode:vscode /home/vscode/.local/share/code-server 2>/dev/null || true
46+
chown -R vscode:vscode /home/vscode/.config/code-server 2>/dev/null || true
47+
chown -R vscode:vscode /home/vscode/.vscode-server/bin 2>/dev/null || true
48+
chown -R vscode:vscode /home/vscode/.vscode-server/extensions 2>/dev/null || true
4749

4850
# Ensure SSH directory has correct permissions if it exists
4951
if [ -d "/home/vscode/.ssh" ]; then

0 commit comments

Comments
 (0)