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
|
|
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
|
|
187
|
-
- **
|
|
188
|
-
- **
|
|
189
|
-
|
|
190
|
-
|
|
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
|
@@ -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
|
-
#
|
|
60
|
-
#
|
|
61
|
-
echo "🔧
|
|
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
|
|
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 "$
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
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
|
-
|
|
122
|
-
|
|
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:
|