Merge pull request #1165 from pikasTech/fix/1148-docker-build-host-gateway

fix: adapt D518 Docker build proxy to host gateway
This commit is contained in:
Lyon
2026-06-27 22:42:07 +08:00
committed by GitHub
+38 -1
View File
@@ -972,6 +972,31 @@ export function ensureNodeBaseImage(spec: HwlabRuntimeLaneSpec, dryRun: boolean,
"build_http_proxy=$(resolve_host_proxy_url \"$build_http_proxy\")",
"build_https_proxy=$(resolve_host_proxy_url \"$build_https_proxy\")",
"build_all_proxy=$(resolve_host_proxy_url \"$build_all_proxy\")",
"build_container_proxy_url() {",
" raw_url=\"$1\"",
" if [ -z \"$raw_url\" ]; then printf '\\n'; return 0; fi",
" python3 - \"$raw_url\" <<'PY'",
"from urllib.parse import urlparse, urlunparse",
"import sys",
"url = sys.argv[1]",
"parsed = urlparse(url)",
"host = parsed.hostname or ''",
"if host in {'127.0.0.1', 'localhost'}:",
" netloc = 'host.docker.internal'",
" if parsed.port is not None:",
" netloc = f'{netloc}:{parsed.port}'",
" print(urlunparse(parsed._replace(netloc=netloc)))",
"else:",
" print(url)",
"PY",
"}",
"build_container_http_proxy=$(build_container_proxy_url \"$build_http_proxy\")",
"build_container_https_proxy=$(build_container_proxy_url \"$build_https_proxy\")",
"build_container_all_proxy=$(build_container_proxy_url \"$build_all_proxy\")",
"docker_build_add_host_args=\"\"",
"case \"$build_container_http_proxy $build_container_https_proxy $build_container_all_proxy\" in",
" *host.docker.internal*) docker_build_add_host_args=\"--add-host host.docker.internal:host-gateway\" ;;",
"esac",
"failed=false",
"ensure_image() {",
" id=\"$1\"; target=\"$2\"; source=\"$3\"; mode=\"$4\"; source_repo=\"$5\"; source_ref=\"$6\"; builder_image=\"$7\"; go_proxy=\"$8\"; docker_network_mode=\"$9\"",
@@ -1000,7 +1025,19 @@ export function ensureNodeBaseImage(spec: HwlabRuntimeLaneSpec, dryRun: boolean,
"ARG MOONBRIDGE_REPO",
"ARG MOONBRIDGE_REF",
"ARG GOPROXY_VALUE",
"ARG HTTP_PROXY",
"ARG HTTPS_PROXY",
"ARG ALL_PROXY",
"ARG NO_PROXY",
"ENV GOPROXY=${GOPROXY_VALUE}",
"ENV HTTP_PROXY=${HTTP_PROXY}",
"ENV HTTPS_PROXY=${HTTPS_PROXY}",
"ENV ALL_PROXY=${ALL_PROXY}",
"ENV NO_PROXY=${NO_PROXY}",
"ENV http_proxy=${HTTP_PROXY}",
"ENV https_proxy=${HTTPS_PROXY}",
"ENV all_proxy=${ALL_PROXY}",
"ENV no_proxy=${NO_PROXY}",
"WORKDIR /src",
"RUN git clone --filter=blob:none \"${MOONBRIDGE_REPO}\" moon-bridge",
"WORKDIR /src/moon-bridge",
@@ -1015,7 +1052,7 @@ export function ensureNodeBaseImage(spec: HwlabRuntimeLaneSpec, dryRun: boolean,
"USER 65532:65532",
"ENTRYPOINT [\"/app/moonbridge\"]",
"DOCKERFILE",
" if env HTTP_PROXY=\"$build_http_proxy\" HTTPS_PROXY=\"$build_https_proxy\" ALL_PROXY=\"$build_all_proxy\" NO_PROXY=\"$build_no_proxy\" http_proxy=\"$build_http_proxy\" https_proxy=\"$build_https_proxy\" all_proxy=\"$build_all_proxy\" no_proxy=\"$build_no_proxy\" docker build --network \"$docker_network_mode\" --build-arg BUILDER_IMAGE=\"$builder_image\" --build-arg MOONBRIDGE_REPO=\"$source_repo\" --build-arg MOONBRIDGE_REF=\"$source_ref\" --build-arg GOPROXY_VALUE=\"$go_proxy\" --build-arg HTTP_PROXY=\"$build_http_proxy\" --build-arg HTTPS_PROXY=\"$build_https_proxy\" --build-arg ALL_PROXY=\"$build_all_proxy\" --build-arg NO_PROXY=\"$build_no_proxy\" -t \"$target\" -f \"$dockerfile\" \"$tmpdir\" >/tmp/hwlab-node-runtime-image-$id-build.out 2>&1; then",
" if env HTTP_PROXY=\"$build_http_proxy\" HTTPS_PROXY=\"$build_https_proxy\" ALL_PROXY=\"$build_all_proxy\" NO_PROXY=\"$build_no_proxy\" http_proxy=\"$build_http_proxy\" https_proxy=\"$build_https_proxy\" all_proxy=\"$build_all_proxy\" no_proxy=\"$build_no_proxy\" docker build $docker_build_add_host_args --network \"$docker_network_mode\" --build-arg BUILDER_IMAGE=\"$builder_image\" --build-arg MOONBRIDGE_REPO=\"$source_repo\" --build-arg MOONBRIDGE_REF=\"$source_ref\" --build-arg GOPROXY_VALUE=\"$go_proxy\" --build-arg HTTP_PROXY=\"$build_container_http_proxy\" --build-arg HTTPS_PROXY=\"$build_container_https_proxy\" --build-arg ALL_PROXY=\"$build_container_all_proxy\" --build-arg NO_PROXY=\"$build_no_proxy\" --build-arg http_proxy=\"$build_container_http_proxy\" --build-arg https_proxy=\"$build_container_https_proxy\" --build-arg all_proxy=\"$build_container_all_proxy\" --build-arg no_proxy=\"$build_no_proxy\" -t \"$target\" -f \"$dockerfile\" \"$tmpdir\" >/tmp/hwlab-node-runtime-image-$id-build.out 2>&1; then",
" docker push \"$target\" >/tmp/hwlab-node-runtime-image-$id-push.out 2>&1 || { cat /tmp/hwlab-node-runtime-image-$id-push.out >&2 2>/dev/null || true; failed=true; }",
" else",
" cat /tmp/hwlab-node-runtime-image-$id-build.out >&2 2>/dev/null || true",