create-claude-docker 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -181,13 +181,13 @@ ZAI_API_KEY=your-zai-api-key-here
181
181
 
182
182
  ### Default Configuration
183
183
 
184
- The container **automatically generates** `settings.json` on every startup using your API key from `.env`.
184
+ The API key is **injected directly as an environment variable** (`ANTHROPIC_AUTH_TOKEN`) in `docker-compose.yml`.
185
185
 
186
- - **API key injection**: The entrypoint script reads `ZAI_API_KEY` (or `ANTHROPIC_API_KEY`) and creates a properly configured `settings.json`
187
- - **Agents**: Pre-defined agent configurations from `.claude/agents/` are copied on first run
188
- - **Persistence**: Settings are stored in `./claude-data/` volume
189
-
190
- **Important:** Changes to `./claude-data/settings.json` will be overwritten on container restart. To persist custom settings, modify `.docker/entrypoint.sh`.
186
+ - **API key injection**: The `docker-compose.yml` passes `ANTHROPIC_AUTH_TOKEN` from your `.env` (supports both `ZAI_API_KEY` and `ANTHROPIC_API_KEY`)
187
+ - **Why env var?** Settings from `settings.json` may be mounted over by the `claude-data` volume before the entrypoint can write them. Using direct env vars ensures the API key is always available.
188
+ - **Model configuration**: Model mappings and base URL are stored in `.claude/settings.json`
189
+ - **Agents**: Pre-defined agent configurations from `.claude/agents/` are available immediately
190
+ - **Persistence**: Claude Code state is stored in `./claude-data/` volume (gitignored)
191
191
 
192
192
  ### Git Integration
193
193
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-claude-docker",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Create Docker-based Claude Code development environment with Z.AI GLM-4.7 support",
5
5
  "author": "Szymon <szymon@fishinthenet.com>",
6
6
  "license": "MIT",
@@ -3,7 +3,6 @@
3
3
  "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",
4
4
  "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
5
5
  "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.7",
6
- "ANTHROPIC_AUTH_TOKEN": "${ANTHROPIC_API_KEY}",
7
6
  "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
8
7
  "API_TIMEOUT_MS": "3000000"
9
8
  },
@@ -18,4 +17,4 @@
18
17
  "Bash(git:*)"
19
18
  ]
20
19
  }
21
- }
20
+ }
@@ -56,70 +56,41 @@ fi
56
56
 
57
57
  echo "✅ Onboarding bypass configured (both locations)"
58
58
 
59
- # ALWAYS regenerate settings.json with current environment variables
60
- # This ensures the API key from .env is properly injected
61
- echo "🔧 Configuring Claude Code settings..."
59
+ # API key is now passed directly via ANTHROPIC_AUTH_TOKEN environment variable
60
+ # in docker-compose.yml (not via settings.json) to avoid volume mount race condition
61
+ echo "🔧 Checking Claude Code configuration..."
62
62
 
63
- # Determine API key (ZAI_API_KEY takes precedence over ANTHROPIC_API_KEY)
63
+ # Determine API key status
64
64
  API_KEY="${ZAI_API_KEY:-$ANTHROPIC_API_KEY}"
65
+ AUTH_TOKEN="${ANTHROPIC_AUTH_TOKEN:-}"
65
66
 
66
- if [ -n "$API_KEY" ]; then
67
- cat > "$SETTINGS_FILE" << EOF
68
- {
69
- "env": {
70
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",
71
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
72
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.7",
73
- "ANTHROPIC_AUTH_TOKEN": "$API_KEY",
74
- "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
75
- "API_TIMEOUT_MS": "3000000",
76
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
77
- },
78
- "permissions": {
79
- "allow": [
80
- "WebSearch",
81
- "Bash(curl:*)",
82
- "Bash(python3:*)",
83
- "Bash(npm:*)",
84
- "Bash(node:*)",
85
- "Bash(mkdir:*)",
86
- "Bash(git:*)"
87
- ]
88
- }
89
- }
90
- EOF
91
- echo "✅ Claude Code configured with Z.AI API key"
67
+ if [ -n "$AUTH_TOKEN" ]; then
68
+ echo " ANTHROPIC_AUTH_TOKEN is set (via docker-compose.yml)"
69
+ elif [ -n "$API_KEY" ]; then
70
+ echo "⚠️ API key found in env but ANTHROPIC_AUTH_TOKEN not set"
71
+ echo " This may indicate a docker-compose.yml configuration issue"
92
72
  else
93
73
  echo "⚠️ WARNING: No API key found!"
94
74
  echo " Please set ANTHROPIC_API_KEY or ZAI_API_KEY in your .env file"
95
- # Create settings without API key (will fail authentication but shows config is working)
96
- cat > "$SETTINGS_FILE" << EOF
97
- {
98
- "env": {
99
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.5-air",
100
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
101
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.7",
102
- "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
103
- "API_TIMEOUT_MS": "3000000",
104
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
105
- },
106
- "permissions": {
107
- "allow": [
108
- "WebSearch",
109
- "Bash(curl:*)",
110
- "Bash(python3:*)",
111
- "Bash(npm:*)",
112
- "Bash(node:*)",
113
- "Bash(mkdir:*)",
114
- "Bash(git:*)"
115
- ]
116
- }
117
- }
118
- EOF
119
75
  fi
120
76
 
121
- echo "📋 Current settings.json:"
122
- cat "$SETTINGS_FILE" | sed 's/"ANTHROPIC_AUTH_TOKEN": "[^"]*"/"ANTHROPIC_AUTH_TOKEN": "***HIDDEN***"/g'
77
+ # Copy default settings.json if not exists in mounted volume
78
+ if [ ! -f "$SETTINGS_FILE" ]; then
79
+ if [ -f "$CLAUDE_DEFAULTS/settings.json" ]; then
80
+ echo "📁 Copying default settings.json..."
81
+ cp "$CLAUDE_DEFAULTS/settings.json" "$SETTINGS_FILE"
82
+ fi
83
+ fi
84
+
85
+ echo "📋 Environment check:"
86
+ echo " ANTHROPIC_AUTH_TOKEN: ${AUTH_TOKEN:+***SET***}${AUTH_TOKEN:-NOT SET}"
87
+ echo " ANTHROPIC_BASE_URL: ${ANTHROPIC_BASE_URL:-NOT SET}"
88
+
89
+ if [ -f "$SETTINGS_FILE" ]; then
90
+ echo "📋 Settings file exists at: $SETTINGS_FILE"
91
+ else
92
+ echo "⚠️ No settings.json found"
93
+ fi
123
94
 
124
95
  echo "📋 Current ~/.claude.json:"
125
96
  cat "$CLAUDE_JSON_FILE"
@@ -7,6 +7,9 @@ services:
7
7
  # API keys - ZAI_API_KEY takes precedence if both are set
8
8
  - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
9
9
  - ZAI_API_KEY=${ZAI_API_KEY:-}
10
+ # CRITICAL: This is the actual token Claude Code uses for authentication
11
+ # Must be set directly as env var because settings.json gets mounted over by volume
12
+ - ANTHROPIC_AUTH_TOKEN=${ZAI_API_KEY:-${ANTHROPIC_API_KEY:-}}
10
13
  # Terminal type for proper rendering
11
14
  - TERM=xterm-256color
12
15
  volumes: