chore: add auto pip mirror selection by region
Some checks failed
CI / lint-and-compile (push) Has been cancelled
CI / lint-and-compile (pull_request) Has been cancelled

This commit is contained in:
root
2026-04-17 16:20:32 +08:00
parent c1e261aa14
commit d2995b2c48
4 changed files with 51 additions and 2 deletions

View File

@@ -15,6 +15,8 @@ LINGMA_MARKETPLACE_PUBLISHER=Alibaba-Cloud
LINGMA_MARKETPLACE_EXTENSION=tongyi-lingma LINGMA_MARKETPLACE_EXTENSION=tongyi-lingma
# VSIX 下载地址(最新优先) # VSIX 下载地址(最新优先)
LINGMA_VSIX_URL=https://tongyi-code.oss-cn-hangzhou.aliyuncs.com/vscode/tongyi-lingma-latest.vsix LINGMA_VSIX_URL=https://tongyi-code.oss-cn-hangzhou.aliyuncs.com/vscode/tongyi-lingma-latest.vsix
# 构建 pip 源地区策略auto/CN/GLOBAL
PIP_REGION=auto
# 启动时总是尝试从 VSIX 刷新二进制 # 启动时总是尝试从 VSIX 刷新二进制
LINGMA_BOOTSTRAP_ALWAYS=true LINGMA_BOOTSTRAP_ALWAYS=true
# 强制刷新true 时忽略本地缓存) # 强制刷新true 时忽略本地缓存)

View File

@@ -5,8 +5,42 @@ WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE=1 \ ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 PYTHONUNBUFFERED=1
ARG PIP_INDEX_URL=https://mirrors.cloud.tencent.com/pypi/simple
ARG PIP_TRUSTED_HOST=mirrors.cloud.tencent.com
ARG PIP_REGION=auto
COPY requirements.txt /app/requirements.txt COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt RUN set -e; \
region="${PIP_REGION}"; \
if [ "${region}" = "auto" ]; then \
region=$(python - <<'PY'
import urllib.request
urls = [
"https://ipapi.co/country/",
"https://ifconfig.co/country-iso",
]
for u in urls:
try:
with urllib.request.urlopen(u, timeout=3) as r:
v = r.read().decode("utf-8", errors="ignore").strip().upper()
if v:
print(v)
raise SystemExit(0)
except Exception:
pass
print("UNKNOWN")
PY
); \
fi; \
echo "[build] PIP region=${region}"; \
if [ "${region}" = "CN" ]; then \
pip install --no-cache-dir --retries 5 --timeout 120 \
-i "${PIP_INDEX_URL}" --trusted-host "${PIP_TRUSTED_HOST}" \
-r /app/requirements.txt \
|| pip install --no-cache-dir --retries 5 --timeout 120 -r /app/requirements.txt; \
else \
pip install --no-cache-dir --retries 5 --timeout 120 -r /app/requirements.txt; \
fi
COPY app /app/app COPY app /app/app

View File

@@ -49,6 +49,7 @@ cp .env.example .env
- `LINGMA_MARKETPLACE_PUBLISHER`Marketplace 发布者 - `LINGMA_MARKETPLACE_PUBLISHER`Marketplace 发布者
- `LINGMA_MARKETPLACE_EXTENSION`Marketplace 扩展名 - `LINGMA_MARKETPLACE_EXTENSION`Marketplace 扩展名
- `LINGMA_VSIX_URL`VSIX 下载地址(最新优先) - `LINGMA_VSIX_URL`VSIX 下载地址(最新优先)
- `PIP_REGION`:构建 pip 源策略(`auto`/`CN`/`GLOBAL`
- `LINGMA_BOOTSTRAP_ALWAYS`:启动时是否总尝试刷新 Lingma - `LINGMA_BOOTSTRAP_ALWAYS`:启动时是否总尝试刷新 Lingma
- `LINGMA_FORCE_REFRESH`:是否强制刷新(忽略本地缓存) - `LINGMA_FORCE_REFRESH`:是否强制刷新(忽略本地缓存)
- `LINGMA_WORK_DIR`Lingma 工作目录(登录与会话数据) - `LINGMA_WORK_DIR`Lingma 工作目录(登录与会话数据)
@@ -78,6 +79,7 @@ LINGMA_SOURCE_TYPE=marketplace
LINGMA_MARKETPLACE_PUBLISHER=Alibaba-Cloud LINGMA_MARKETPLACE_PUBLISHER=Alibaba-Cloud
LINGMA_MARKETPLACE_EXTENSION=tongyi-lingma LINGMA_MARKETPLACE_EXTENSION=tongyi-lingma
LINGMA_VSIX_URL=https://tongyi-code.oss-cn-hangzhou.aliyuncs.com/vscode/tongyi-lingma-latest.vsix LINGMA_VSIX_URL=https://tongyi-code.oss-cn-hangzhou.aliyuncs.com/vscode/tongyi-lingma-latest.vsix
PIP_REGION=auto
DEDICATED_DOMAIN_URL= DEDICATED_DOMAIN_URL=
``` ```
@@ -93,6 +95,11 @@ DEDICATED_DOMAIN_URL=
docker compose up -d --build docker compose up -d --build
``` ```
说明:
- 构建阶段已默认使用腾讯云 PyPI 镜像(`mirrors.cloud.tencent.com`)。
- 如需自定义镜像源,可在 `docker-compose.yml``build.args` 中修改。
查看日志: 查看日志:
```bash ```bash

View File

@@ -1,7 +1,13 @@
services: services:
lingma-openai-gateway: lingma-openai-gateway:
build: . build:
context: .
# Use Tencent PyPI mirror during build to avoid timeout.
args:
PIP_INDEX_URL: https://mirrors.cloud.tencent.com/pypi/simple
PIP_TRUSTED_HOST: mirrors.cloud.tencent.com
PIP_REGION: auto
container_name: lingma-openai-gateway container_name: lingma-openai-gateway
env_file: env_file:
- .env - .env