From 266ee74fc1551957cde14cfc5553a08f913d8572 Mon Sep 17 00:00:00 2001 From: chuan Date: Fri, 7 Nov 2025 00:35:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0mirror=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E9=AB=98=E7=BC=96=E8=AF=91=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .npmrc | 3 ++ apps/admin/Dockerfile.admin | 7 ++++ apps/admin/Dockerfile.dev | 8 ++++ apps/api/Dockerfile.api | 10 ++++- apps/api/Dockerfile.dev | 10 ++++- apps/api/pip.conf | 6 +++ apps/live/Dockerfile.dev | 7 ++++ apps/live/Dockerfile.live | 7 ++++ apps/proxy/Dockerfile.ce | 3 ++ apps/space/Dockerfile.dev | 7 ++++ apps/space/Dockerfile.space | 7 ++++ apps/web/Dockerfile.dev | 7 ++++ apps/web/Dockerfile.web | 7 ++++ docs/wsl2-docker-credential-issue.md | 56 ++++++++++++++++++++++++++++ setup.sh | 4 ++ 15 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 apps/api/pip.conf create mode 100644 docs/wsl2-docker-credential-issue.md diff --git a/.npmrc b/.npmrc index d652acc3..24e664d7 100644 --- a/.npmrc +++ b/.npmrc @@ -32,3 +32,6 @@ prefer-offline=true # Ensure workspace protocol is used when adding internal deps save-workspace-protocol=true + +# Configure Chinese mirrors for faster downloads in China +registry=https://registry.npmmirror.com diff --git a/apps/admin/Dockerfile.admin b/apps/admin/Dockerfile.admin index 6af4ff6c..7f23909b 100644 --- a/apps/admin/Dockerfile.admin +++ b/apps/admin/Dockerfile.admin @@ -1,5 +1,12 @@ FROM node:22-alpine AS base +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + WORKDIR /app ENV TURBO_TELEMETRY_DISABLED=1 diff --git a/apps/admin/Dockerfile.dev b/apps/admin/Dockerfile.dev index 0b82669c..b8795b0a 100644 --- a/apps/admin/Dockerfile.dev +++ b/apps/admin/Dockerfile.dev @@ -1,4 +1,12 @@ FROM node:22-alpine + +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + RUN apk add --no-cache libc6-compat # Set working directory WORKDIR /app diff --git a/apps/api/Dockerfile.api b/apps/api/Dockerfile.api index 13251481..7cf3c745 100644 --- a/apps/api/Dockerfile.api +++ b/apps/api/Dockerfile.api @@ -3,9 +3,16 @@ FROM python:3.12.10-alpine # set environment variables ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 -ENV PIP_DISABLE_PIP_VERSION_CHECK=1 +ENV PIP_DISABLE_PIP_VERSION_CHECK=1 ENV INSTANCE_CHANGELOG_URL=https://sites.plane.so/pages/691ef037bcfe416a902e48cb55f59891/ +# Configure Chinese mirrors for pip +ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/ +ENV PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + # Update system packages for security RUN apk update && apk upgrade @@ -19,6 +26,7 @@ RUN apk add --no-cache --upgrade \ "openssl" COPY requirements.txt ./ +COPY pip.conf /etc/pip.conf COPY requirements ./requirements RUN apk add --no-cache libffi-dev RUN apk add --no-cache --virtual .build-deps \ diff --git a/apps/api/Dockerfile.dev b/apps/api/Dockerfile.dev index 3ec8c634..6a5a1fbf 100644 --- a/apps/api/Dockerfile.dev +++ b/apps/api/Dockerfile.dev @@ -3,9 +3,16 @@ FROM python:3.12.5-alpine AS backend # set environment variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 -ENV PIP_DISABLE_PIP_VERSION_CHECK=1 +ENV PIP_DISABLE_PIP_VERSION_CHECK=1 ENV INSTANCE_CHANGELOG_URL https://sites.plane.so/pages/691ef037bcfe416a902e48cb55f59891/ +# Configure Chinese mirrors for pip +ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/ +ENV PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + RUN apk --no-cache add \ "bash~=5.2" \ "libpq" \ @@ -26,6 +33,7 @@ RUN apk --no-cache add \ WORKDIR /code COPY requirements.txt ./requirements.txt +COPY pip.conf /etc/pip.conf ADD requirements ./requirements # Install the local development settings diff --git a/apps/api/pip.conf b/apps/api/pip.conf new file mode 100644 index 00000000..a2246ee9 --- /dev/null +++ b/apps/api/pip.conf @@ -0,0 +1,6 @@ +[global] +index-url = https://pypi.tuna.tsinghua.edu.cn/simple/ +trusted-host = pypi.tuna.tsinghua.edu.cn + +[install] +trusted-host = pypi.tuna.tsinghua.edu.cn \ No newline at end of file diff --git a/apps/live/Dockerfile.dev b/apps/live/Dockerfile.dev index 5e0f5372..50a4877f 100644 --- a/apps/live/Dockerfile.dev +++ b/apps/live/Dockerfile.dev @@ -1,5 +1,12 @@ FROM node:22-alpine +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + RUN apk add --no-cache libc6-compat WORKDIR /app diff --git a/apps/live/Dockerfile.live b/apps/live/Dockerfile.live index 92fbee6a..fcf07a5b 100644 --- a/apps/live/Dockerfile.live +++ b/apps/live/Dockerfile.live @@ -1,6 +1,13 @@ # syntax=docker/dockerfile:1.7 FROM node:22-alpine AS base +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + # Setup pnpm package manager with corepack and configure global bin directory for caching ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" diff --git a/apps/proxy/Dockerfile.ce b/apps/proxy/Dockerfile.ce index 2c0f3ead..5276976b 100644 --- a/apps/proxy/Dockerfile.ce +++ b/apps/proxy/Dockerfile.ce @@ -1,5 +1,8 @@ FROM caddy:2.10.0-builder-alpine AS caddy-builder +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + RUN xcaddy build \ --with github.com/caddy-dns/cloudflare@v0.2.1 \ --with github.com/caddy-dns/digitalocean@04bde2867106aa1b44c2f9da41a285fa02e629c5 \ diff --git a/apps/space/Dockerfile.dev b/apps/space/Dockerfile.dev index b915aad0..ea85bfcd 100644 --- a/apps/space/Dockerfile.dev +++ b/apps/space/Dockerfile.dev @@ -1,5 +1,12 @@ FROM node:22-alpine +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + RUN apk add --no-cache libc6-compat # Set working directory diff --git a/apps/space/Dockerfile.space b/apps/space/Dockerfile.space index 89c02ae9..e2c3d1db 100644 --- a/apps/space/Dockerfile.space +++ b/apps/space/Dockerfile.space @@ -1,5 +1,12 @@ FROM node:22-alpine AS base +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + WORKDIR /app ENV TURBO_TELEMETRY_DISABLED=1 diff --git a/apps/web/Dockerfile.dev b/apps/web/Dockerfile.dev index d914fd81..d8835229 100644 --- a/apps/web/Dockerfile.dev +++ b/apps/web/Dockerfile.dev @@ -1,5 +1,12 @@ FROM node:22-alpine +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + RUN apk add --no-cache libc6-compat # Set working directory WORKDIR /app diff --git a/apps/web/Dockerfile.web b/apps/web/Dockerfile.web index 04e04a3a..0037268b 100644 --- a/apps/web/Dockerfile.web +++ b/apps/web/Dockerfile.web @@ -1,6 +1,13 @@ # syntax=docker/dockerfile:1.7 FROM node:22-alpine AS base +# Configure Chinese mirrors for npm/pnpm +ENV npm_config_registry=https://registry.npmmirror.com +ENV PNPM_REGISTRY=https://registry.npmmirror.com + +# Configure Chinese mirrors for apk +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + # Setup pnpm package manager with corepack and configure global bin directory for caching ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" diff --git a/docs/wsl2-docker-credential-issue.md b/docs/wsl2-docker-credential-issue.md new file mode 100644 index 00000000..a2b27747 --- /dev/null +++ b/docs/wsl2-docker-credential-issue.md @@ -0,0 +1,56 @@ +# WSL2 Docker 凭证错误修复 + +## 错误现象 + +```bash +docker compose -f docker-compose-local.yml up -d +``` + +构建失败,报错: + +``` +error getting credentials - err: fork/exec /usr/bin/docker-credential-desktop.exe: exec format error +``` + +## 根本原因 + +Docker Desktop 在 Windows 上安装后,会在 `~/.docker/config.json` 中配置 Windows 凭证助手: + +```json +{ + "credsStore": "desktop.exe" +} +``` + +WSL2 是 Linux 环境,无法执行 `.exe` 文件,导致 Docker 在拉取镜像时尝试调用凭证助手失败。 + +## 解决方案 + +编辑 `~/.docker/config.json`,禁用凭证存储: + +```json +{ + "auths": {}, + "credsStore": "" +} +``` + +或直接执行: + +```bash +mkdir -p ~/.docker +cat > ~/.docker/config.json << 'EOF' +{ + "auths": {}, + "credsStore": "" +} +EOF +``` + +## 验证 + +重新运行 Docker Compose,镜像拉取和构建正常进行: + +```bash +docker compose -f docker-compose-local.yml up -d +``` diff --git a/setup.sh b/setup.sh index 12fcceae..ec6cb050 100755 --- a/setup.sh +++ b/setup.sh @@ -77,6 +77,10 @@ else success=false fi +# Configure Chinese mirrors for npm/pnpm before installation +export npm_config_registry=https://registry.npmmirror.com +export PNPM_REGISTRY=https://registry.npmmirror.com + # Activate pnpm (version set in package.json) corepack enable pnpm || success=false # Install Node dependencies