diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..1399d8c --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(curl:*)" + ], + "deny": [], + "ask": [] + } +} \ No newline at end of file diff --git a/.gitea/workflows/build-and-push.yml b/.gitea/workflows/build-and-push.yml index 2782f2d..ce931f7 100644 --- a/.gitea/workflows/build-and-push.yml +++ b/.gitea/workflows/build-and-push.yml @@ -43,23 +43,34 @@ jobs: docker logout "$ACR_REGISTRY" || true echo "$ACR_PASSWORD" | docker login "$ACR_REGISTRY" --username "$ACR_USERNAME" --password-stdin - - name: Start v2ray-client + - name: Start v2ray-client (write config + run + verify) env: V2RAY_JSON: ${{ secrets.V2RAY_JSON }} run: | - echo "$V2RAY_JSON" set -euo pipefail + + # 1) 写配置到工作区(确保同一台 runner 的同一路径) mkdir -p "${GITHUB_WORKSPACE}/v2ray" printf '%s' "$V2RAY_JSON" > "${GITHUB_WORKSPACE}/v2ray/config.json" + # 可选校验 jq . "${GITHUB_WORKSPACE}/v2ray/config.json" >/dev/null + # 2) 清理旧容器 docker rm -f v2ray-client >/dev/null 2>&1 || true + + # 3) 运行:使用 --mount 语法(可读性更好,SELinux 时也可加 ,z 或 ,Z) docker run -d --name v2ray-client \ --network host \ - -v ${{ github.workspace }}/v2ray:/etc/v2ray:ro \ + --mount type=bind,src=${GITHUB_WORKSPACE}/v2ray,dst=/etc/v2ray,ro \ v2fly/v2fly-core:latest \ run -c /etc/v2ray/config.json + # 4) 立刻验证挂载和文件存在 + echo "== Mounts ==" && docker inspect -f '{{range .Mounts}}{{println .Type .Source "->" .Destination}}{{end}}' v2ray-client + echo "== Container /etc/v2ray listing ==" && docker exec v2ray-client sh -lc 'ls -l /etc /etc/v2ray || true' + echo "== Head of config ==" && docker exec v2ray-client sh -lc 'head -n1 /etc/v2ray/config.json || echo "no config.json"' + + - name: Build Docker Image (host network; no Dockerfile change) env: IMAGE: ${{ secrets.ACR_REGISTRY }}/${{ secrets.ACR_NAMESPACE }}/${{ vars.IMAGE_NAME }}