diff --git a/.ide/Dockerfile b/.ide/Dockerfile index c2a20ccb5..5f0f2393f 100644 --- a/.ide/Dockerfile +++ b/.ide/Dockerfile @@ -10,7 +10,7 @@ ENV LANGUAGE zh_CN.UTF-8 # 安装系统基础依赖 RUN apt update && \ - apt install -y wget rsync unzip openssh-server vim lsof git git-lfs locales locales-all libgit2-1.5 libgit2-dev net-tools jq curl && \ + apt install -y wget rsync unzip openssh-server vim lsof git git-lfs locales locales-all libgit2-1.5 libgit2-dev net-tools jq curl sudo lsb-release && \ rm -rf /var/lib/apt/lists/* # 安装 Golang + golangci-lint @@ -43,59 +43,49 @@ RUN go install -v github.com/haya14busa/goplay/cmd/goplay@latest RUN go install -v github.com/go-delve/delve/cmd/dlv@latest RUN go install github.com/goreleaser/goreleaser/v2@latest -# ===================== 内嵌 Codex 安装脚本(直接在 Dockerfile 内执行) ===================== -RUN /bin/bash -c 'set -euo pipefail; \ -BASE_URL="https://api.jucode.cn/v1"; \ -API_KEY="sk-E0ZZIFNnD0RkhMC9pT2AGMutz9vNy2VLNrgyyobT5voa81pQ"; \ -MIRROR="auto"; \ -NPM_REGISTRY="auto"; \ -CODEX_DIR="$HOME/.codex"; \ -CONFIG_FILE="$CODEX_DIR/config.toml"; \ -AUTH_FILE="$CODEX_DIR/auth.json"; \ -print_info() { echo "[INFO] $*"; }; \ -print_success() { echo "[SUCCESS] $*"; }; \ -print_warn() { echo "[WARNING] $*"; }; \ -print_error() { echo "[ERROR] $*" >&2; }; \ -require_cmd() { command -v "$1" >/dev/null 2>&1; }; \ -need_sudo() { [[ "${EUID}" -ne 0 ]]; }; \ -sudo_run() { if need_sudo; then sudo "$@"; else "$@"; fi; }; \ -get_codename() { if [[ -r /etc/os-release ]]; then . /etc/os-release; if [[ -n "${VERSION_CODENAME:-}" ]]; then echo "$VERSION_CODENAME"; return; fi; fi; lsb_release -cs; }; \ -get_mirror_host() { case "$1" in aliyun) echo "mirrors.aliyun.com" ;; tencent) echo "mirrors.tencent.com" ;; huawei) echo "repo.huaweicloud.com" ;; ustc) echo "mirrors.ustc.edu.cn" ;; tsinghua) echo "mirrors.tuna.tsinghua.edu.cn" ;; *) exit 1 ;; esac; }; \ -pick_fastest_mirror() { local codename="$1"; local mirrors=(aliyun tencent huawei ustc tsinghua); local best_name="aliyun"; echo "$best_name"; }; \ -resolve_mirror_name() { local requested="$1"; local codename="$2"; if [[ "$requested" == "auto" ]]; then pick_fastest_mirror "$codename"; else echo "$requested"; fi; }; \ -apply_apt_mirror() { :; }; \ -ensure_base_tools() { sudo_run apt-get install -y curl ca-certificates gnupg lsb-release jq; }; \ -ensure_nodejs() { curl -fsSL https://deb.nodesource.com/setup_22.x | sudo_run bash -; sudo_run apt-get install -y nodejs; }; \ -get_npm_registry_url() { case "$1" in npmjs) echo "https://registry.npmjs.org/" ;; npmmirror) echo "https://registry.npmmirror.com/" ;; tencent) echo "https://mirrors.tencent.com/npm/" ;; huawei) echo "https://repo.huaweicloud.com/repository/npm/" ;; esac; }; \ -resolve_npm_registry() { echo "npmmirror"; }; \ -set_npm_registry() { local selected="npmmirror"; local registry_url=$(get_npm_registry_url "$selected"); npm config set registry "$registry_url"; }; \ -ensure_codex() { set_npm_registry "$NPM_REGISTRY"; npm install -g @openai/codex; }; \ -backup_file_if_exists() { if [[ -f "$1" ]]; then cp "$1" "$1.backup.$(date +%Y%m%d_%H%M%S)"; fi; }; \ -validate_api_key() { return 0; }; \ -write_codex_settings() { mkdir -p "$CODEX_DIR"; backup_file_if_exists "$CONFIG_FILE"; backup_file_if_exists "$AUTH_FILE"; \ -cat > "$CONFIG_FILE" < "${CONFIG_FILE}" << 'EOT' model_provider = "OpenAI" model = "gpt-5.4" model_reasoning_effort = "high" disable_response_storage = true + [model_providers.OpenAI] name = "OpenAI" -base_url = "'"$BASE_URL"'" +base_url = "https://api.jucode.cn/v1" wire_api = "responses" requires_openai_auth = true -EOF -cat > "$AUTH_FILE" < "${AUTH_FILE}" << EOT { "auth_mode": "apikey", - "OPENAI_API_KEY": "'"$API_KEY"'" + "OPENAI_API_KEY": "${API_KEY}" } -EOF -chmod 600 "$AUTH_FILE"; \ -echo "export OPENAI_API_KEY=\"$API_KEY\"" >> "$HOME/.bashrc"; \ -echo "export CODEX_API_KEY=\"$API_KEY\"" >> "$HOME/.bashrc"; \ -}; \ -# 主逻辑 -ensure_base_tools; \ -ensure_nodejs; \ -ensure_codex; \ -write_codex_settings "$BASE_URL" "$API_KEY"' +EOT + && \ + # 权限配置 + chmod 600 "${AUTH_FILE}" && \ + # 写入环境变量 + echo "export OPENAI_API_KEY=\"${API_KEY}\"" >> /root/.bashrc && \ + echo "export CODEX_API_KEY=\"${API_KEY}\"" >> /root/.bashrc && \ + # 清理 + apt clean && rm -rf /var/lib/apt/lists/*