编辑文件 Dockerfile
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
128
.ide/Dockerfile
128
.ide/Dockerfile
@@ -1,51 +1,101 @@
|
||||
# 此文件为远程开发环境配置文件
|
||||
# 远程开发环境完整配置
|
||||
FROM debian:bookworm
|
||||
|
||||
ENV GO_VERSION=1.25.0
|
||||
|
||||
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 &&\
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# install golang
|
||||
RUN curl -fsSLO https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz &&\
|
||||
rm -rf /usr/local/go && tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz &&\
|
||||
ln -sf /usr/local/go/bin/go /usr/bin/go &&\
|
||||
ln -sf /usr/local/go/bin/gofmt /usr/bin/gofmt &&\
|
||||
curl -sSfL https://raw.github.com/golangci/golangci-lint/master/install.sh | sh -s v1.54.2 &&\
|
||||
rm -rf go${GO_VERSION}.linux-amd64.tar.gz
|
||||
|
||||
# install code-server
|
||||
RUN curl -fsSL https://code-server.dev/install.sh | sh
|
||||
RUN code-server --install-extension dbaeumer.vscode-eslint &&\
|
||||
code-server --install-extension pinage404.git-extension-pack &&\
|
||||
code-server --install-extension redhat.vscode-yaml &&\
|
||||
code-server --install-extension esbenp.prettier-vscode &&\
|
||||
code-server --install-extension golang.go &&\
|
||||
code-server --install-extension eamodio.gitlens &&\
|
||||
code-server --install-extension waderyan.gitblame &&\
|
||||
code-server --install-extension donjayamanne.githistory &&\
|
||||
code-server --install-extension mhutchie.git-graph &&\
|
||||
code-server --install-extension ms-azuretools.vscode-docker &&\
|
||||
code-server --install-extension PKief.material-icon-theme &&\
|
||||
code-server --install-extension tencent-cloud.coding-copilot &&\
|
||||
echo done
|
||||
|
||||
|
||||
|
||||
# install Go Tools
|
||||
ENV GOPATH /root/go
|
||||
ENV PATH="${PATH}:${GOPATH}/bin"
|
||||
ENV LC_ALL zh_CN.UTF-8
|
||||
ENV LANG zh_CN.UTF-8
|
||||
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 && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 安装 Golang + golangci-lint
|
||||
RUN curl -fsSLO https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \
|
||||
rm -rf /usr/local/go && tar -C /usr/local -xzf go${GO_VERSION}.linux-amd64.tar.gz && \
|
||||
ln -sf /usr/local/go/bin/go /usr/bin/go && \
|
||||
ln -sf /usr/local/go/bin/gofmt /usr/bin/gofmt && \
|
||||
curl -sSfL https://raw.github.com/golangci/golangci-lint/master/install.sh | sh -s v1.54.2 && \
|
||||
rm -rf go${GO_VERSION}.linux-amd64.tar.gz
|
||||
|
||||
# 安装 code-server + 常用插件
|
||||
RUN curl -fsSL https://code-server.dev/install.sh | sh
|
||||
RUN code-server --install-extension dbaeumer.vscode-eslint && \
|
||||
code-server --install-extension pinage404.git-extension-pack && \
|
||||
code-server --install-extension redhat.vscode-yaml && \
|
||||
code-server --install-extension esbenp.prettier-vscode && \
|
||||
code-server --install-extension golang.go && \
|
||||
code-server --install-extension eamodio.gitlens && \
|
||||
code-server --install-extension waderyan.gitblame && \
|
||||
code-server --install-extension donjayamanne.githistory && \
|
||||
code-server --install-extension mhutchie.git-graph && \
|
||||
code-server --install-extension ms-azuretools.vscode-docker && \
|
||||
code-server --install-extension PKief.material-icon-theme
|
||||
|
||||
# 安装 Go 开发工具
|
||||
RUN go install -v golang.org/x/tools/gopls@latest
|
||||
RUN go install -v github.com/cweill/gotests/gotests@latest
|
||||
RUN go install -v github.com/josharian/impl@latest
|
||||
RUN go install -v github.com/haya14busa/goplay/cmd/goplay@latest
|
||||
RUN go install -v github.com/go-delve/delve/cmd/dlv@latest
|
||||
# install goreleaser
|
||||
RUN go install github.com/goreleaser/goreleaser/v2@latest
|
||||
# 配置 codex
|
||||
RUN curl -fsSL https://oss.itbzzb.cn/setup-codex.sh | YES=1 bash -s -- --base-url https://api.jucode.cn/v1 --api-key sk-E0ZZIFNnD0RkhMC9pT2AGMutz9vNy2VLNrgyyobT5voa81pQ --mirror auto
|
||||
ENV LC_ALL zh_CN.UTF-8
|
||||
ENV LANG zh_CN.UTF-8
|
||||
ENV LANGUAGE zh_CN.UTF-8
|
||||
|
||||
# ===================== 内嵌 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" <<EOF
|
||||
model_provider = "OpenAI"
|
||||
model = "gpt-5.4"
|
||||
model_reasoning_effort = "high"
|
||||
disable_response_storage = true
|
||||
[model_providers.OpenAI]
|
||||
name = "OpenAI"
|
||||
base_url = "'"$BASE_URL"'"
|
||||
wire_api = "responses"
|
||||
requires_openai_auth = true
|
||||
EOF
|
||||
cat > "$AUTH_FILE" <<EOF
|
||||
{
|
||||
"auth_mode": "apikey",
|
||||
"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"'
|
||||
|
||||
Reference in New Issue
Block a user