Update Dockerfile and entrypoint for enhanced development tools and configuration
Update Dockerfile to include clangd, replace npm packages with pyright and typescript-language-server, add GOPATH and GOBIN environment variables, and improve user creation. Update docker-entrypoint.sh to export environment variables, configure opencode.json, and set up MCP language server with proper configuration files.
This commit is contained in:
@@ -1,6 +1,17 @@
|
||||
#!/bin/bash
|
||||
# docker-entrypoint.sh
|
||||
|
||||
export USERNAME=${USERNAME:-devuser}
|
||||
|
||||
export LOCAL_LLM_API=${LOCAL_LLM_API:-http://host.docker.internal:1248/v1}
|
||||
export MAXTOKEN=${MAXTOKEN:-4096}
|
||||
export NUM_CTX=${NUM_CTX:-32768}
|
||||
export REPEAT_PENALTY=${REPEAT_PENALTY:-1.3}
|
||||
export TEMPERATURE=${TEMPERATURE:-0.5}
|
||||
export TOP_P=${TOP_P:-0.95}
|
||||
export TOP_K=${TOP_K:-40}
|
||||
export STOP=${STOP:-"[\"</s>\", \"\\n\\n\", \"def \", \"class \"]"}
|
||||
|
||||
# --- Initialise .ai_index si nécessaire ---
|
||||
if [ ! -d "/workspace/.ai_index" ]; then
|
||||
mkdir -p /workspace/.ai_index/ast
|
||||
@@ -10,17 +21,98 @@ fi
|
||||
|
||||
# --- Configure LOCAL_LLM_API pour Bash ---
|
||||
if [ -n "$LOCAL_LLM_API" ]; then
|
||||
if ! grep -q "LOCAL_LLM_API" /home/devuser/.bashrc; then
|
||||
echo "export LOCAL_LLM_API=$LOCAL_LLM_API" >> /home/devuser/.bashrc
|
||||
if ! grep -q "LOCAL_LLM_API" /home/${USERNAME}/.bashrc; then
|
||||
echo "export LOCAL_LLM_API=$LOCAL_LLM_API" >> /home/${USERNAME}/.bashrc
|
||||
fi
|
||||
|
||||
mkdir -p /home/${USERNAME}/.config/opencode
|
||||
CONFIG_FILE=/home/${USERNAME}/.config/opencode/opencode.json
|
||||
|
||||
cat > $CONFIG_FILE <<EOF
|
||||
{
|
||||
"\$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"lmstudio": {
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"name": "LM Studio (local)",
|
||||
"options": {
|
||||
"baseURL": "$LOCAL_LLM_API",
|
||||
"apiKey": ""
|
||||
},
|
||||
"models": {
|
||||
"qwen/qwen3-coder-next@4bit": {
|
||||
"name": "Qwen 3 Coder Next 80B — (LLMStudio ; 4-bit)",
|
||||
"limit": {
|
||||
"context": 200000,
|
||||
"output": 65536
|
||||
},
|
||||
"settings": {
|
||||
"temperature": $TEMPERATURE,
|
||||
"top_p": $TOP_P,
|
||||
"top_k": $TOP_K,
|
||||
"max_tokens": ${MAXTOKEN},
|
||||
"num_ctx": ${NUM_CTX},
|
||||
"repeat_penalty": ${REPEAT_PENALTY},
|
||||
"stop": ${STOP}
|
||||
}
|
||||
},
|
||||
"qwen/qwen3-coder-next@6bit": {
|
||||
"name": "Qwen 3 Coder Next 80B — (LLMStudio ; 6-bit)",
|
||||
"limit": {
|
||||
"context": 200000,
|
||||
"output": 65536
|
||||
},
|
||||
"settings": {
|
||||
"temperature": $TEMPERATURE,
|
||||
"top_p": $TOP_P,
|
||||
"top_k": $TOP_K,
|
||||
"max_tokens": ${MAXTOKEN},
|
||||
"num_ctx": ${NUM_CTX},
|
||||
"repeat_penalty": ${REPEAT_PENALTY},
|
||||
"stop": ${STOP}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"model": "lmstudio/qwen/qwen3-coder-next@4bit"
|
||||
}
|
||||
EOF
|
||||
|
||||
chown ${USERNAME}:${USERNAME} ${CONFIG_FILE}
|
||||
fi
|
||||
|
||||
# --- Lance MCP server en background si pas déjà lancé ---
|
||||
if [ ! -f "/workspace/.ai_index/mcp.pid" ] || ! kill -0 $(cat /workspace/.ai_index/mcp.pid) 2>/dev/null; then
|
||||
/opt/bin/mcp-server >/workspace/.ai_index/mcp.log 2>&1 &
|
||||
echo $! >/workspace/.ai_index/mcp.pid
|
||||
# --- Install MCP Language Server ---
|
||||
if command -v mcp-language-server &> /dev/null; then
|
||||
mkdir -p /home/${USERNAME}/.config/opencode
|
||||
MCP_CONFIG=/home/${USERNAME}/.config/opencode/mcp_servers.json
|
||||
|
||||
cat > $MCP_CONFIG <<EOF
|
||||
{
|
||||
"mcpServers": {
|
||||
"language-server": {
|
||||
"command": "mcp-language-server",
|
||||
"args": [
|
||||
"--workspace",
|
||||
"/workspace",
|
||||
"--lsp",
|
||||
"gopls"
|
||||
],
|
||||
"env": {
|
||||
"PATH": "/usr/local/go/bin:/usr/local/cargo/bin:/usr/local/bin:$PATH",
|
||||
"GOPATH": "/home/${USERNAME}/go",
|
||||
"GOCACHE": "/home/${USERNAME}/.cache/go-build",
|
||||
"GOMODCACHE": "/home/${USERNAME}/go/pkg/mod"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
chown ${USERNAME}:${USERNAME} $MCP_CONFIG
|
||||
fi
|
||||
|
||||
|
||||
# --- Force Bash comme shell par défaut ---
|
||||
if [ -z "$1" ]; then
|
||||
exec /bin/bash
|
||||
|
||||
Reference in New Issue
Block a user