@@ -44,6 +44,29 @@ RUST_TARGETS ?= wasm32-unknown-unknown
4444DOCKER_BUILD_EXTRA_ARGS ?=
4545SKIP_BUILD_NETWORK_CHECK ?= 0
4646
47+ # Forward host proxy env vars to Docker build (BuildKit predefined ARGs —
48+ # available in all stages without Dockerfile ARG declarations, excluded
49+ # from cache key so proxy changes don't bust layer cache).
50+ # Rewrite localhost proxy addresses: 127.0.0.1/localhost on the host is the
51+ # container's own loopback during build — host.docker.internal reaches the
52+ # host. The @-patterns catch authenticated proxies (user:pass@127.0.0.1).
53+ _dproxy = $(subst @localhost,@host.docker.internal,$(subst @127.0.0.1,@host.docker.internal,$(subst ://localhost,://host.docker.internal,$(subst ://127.0.0.1,://host.docker.internal,$1) ) ) )
54+ PROXY_BUILD_ARGS := \
55+ $(if $(HTTP_PROXY ) ,--build-arg HTTP_PROXY=$(call _dproxy,$(HTTP_PROXY ) ) ) \
56+ $(if $(HTTPS_PROXY ) ,--build-arg HTTPS_PROXY=$(call _dproxy,$(HTTPS_PROXY ) ) ) \
57+ $(if $(http_proxy ) ,--build-arg http_proxy=$(call _dproxy,$(http_proxy ) ) ) \
58+ $(if $(https_proxy ) ,--build-arg https_proxy=$(call _dproxy,$(https_proxy ) ) ) \
59+ $(if $(NO_PROXY ) ,--build-arg NO_PROXY=$(NO_PROXY ) ) \
60+ $(if $(no_proxy ) ,--build-arg no_proxy=$(no_proxy ) )
61+
62+ # host.docker.internal resolves implicitly on Docker Desktop/OrbStack only;
63+ # native Linux Engine needs the explicit host-gateway mapping during build.
64+ ifneq ($(strip $(HTTP_PROXY )$(HTTPS_PROXY )$(http_proxy )$(https_proxy ) ) ,)
65+ PROXY_BUILD_ARGS += --add-host host.docker.internal:host-gateway
66+ endif
67+
68+ DOCKER_BUILD_FLAGS = $(PROXY_BUILD_ARGS ) $(DOCKER_BUILD_EXTRA_ARGS )
69+
4770TOOLCHAIN_BUILD_ARGS := \
4871 --build-arg NODE_MAJOR=$(NODE_MAJOR ) \
4972 --build-arg GO_VERSION=$(GO_VERSION ) \
@@ -112,7 +135,7 @@ build-network-check:
112135 printf ' %s\n' \
113136 ' FROM node:$(NODE_MAJOR)-bookworm-slim' \
114137 ' RUN node -e "require(' \' ' dns' \' ' ).lookup(' \' ' registry.npmjs.org' \' ' ,{all:true},(e,a)=>{if(e){console.error(e);process.exit(1)};console.log(a.map(x=>x.address).slice(0,3).join(' \' ' ,' \' ' ))})"' \
115- | docker build $(DOCKER_BUILD_EXTRA_ARGS ) --progress=plain --no-cache -f - . > /dev/null; \
138+ | docker build $(DOCKER_BUILD_FLAGS ) --progress=plain --no-cache -f - . > /dev/null; \
116139 fi
117140
118141build-main : build-network-check
@@ -159,23 +182,23 @@ build-main: build-network-check
159182 fi ; \
160183 fi
161184 @echo " Hint: override via GO_VERSION=... CLAUDE_CODE_VERSION=... or run 'make versions-pin'"
162- docker build $(DOCKER_BUILD_EXTRA_ARGS ) -f $(DOCKERFILE ) $(MAIN_BUILD_ARGS ) -t $(MAIN_IMAGE ) .
185+ docker build $(DOCKER_BUILD_FLAGS ) -f $(DOCKERFILE ) $(MAIN_BUILD_ARGS ) -t $(MAIN_IMAGE ) .
163186 @echo " ✅ Build completed: $( MAIN_IMAGE) "
164187
165188rebuild :
166189 @echo " 🔨 Rebuilding Docker image (no cache) with $( DOCKERFILE) ..."
167- docker build $(DOCKER_BUILD_EXTRA_ARGS ) -f $(DOCKERFILE ) --no-cache $(MAIN_BUILD_ARGS ) -t $(MAIN_IMAGE ) .
190+ docker build $(DOCKER_BUILD_FLAGS ) -f $(DOCKERFILE ) --no-cache $(MAIN_BUILD_ARGS ) -t $(MAIN_IMAGE ) .
168191 @echo " ✅ Rebuild completed: $( MAIN_IMAGE) "
169192
170193
171194build-core :
172195 @echo " 🔨 Building stable core image..."
173- docker build $(DOCKER_BUILD_EXTRA_ARGS ) -f $(DOCKERFILE ) --target agent-base $(CORE_BUILD_ARGS ) -t $(CORE_IMAGE ) .
196+ docker build $(DOCKER_BUILD_FLAGS ) -f $(DOCKERFILE ) --target agent-base $(CORE_BUILD_ARGS ) -t $(CORE_IMAGE ) .
174197 @echo " ✅ Core build completed: $( CORE_IMAGE) "
175198
176199build-rust-image : build-network-check
177200 @echo " 🔨 Building Rust Docker image..."
178- docker build $(DOCKER_BUILD_EXTRA_ARGS ) -f $(RUST_DOCKERFILE ) \
201+ docker build $(DOCKER_BUILD_FLAGS ) -f $(RUST_DOCKERFILE ) \
179202 --build-arg BASE_IMAGE=$(CORE_IMAGE ) \
180203 $(RUST_BUILD_ARGS ) \
181204 -t $(RUST_IMAGE ) .
@@ -192,27 +215,27 @@ build-all:
192215
193216buildx :
194217 @echo " 🔨 Building with docker buildx..."
195- docker buildx build -f $(DOCKERFILE ) --load $(MAIN_BUILD_ARGS ) -t $(MAIN_IMAGE ) .
218+ docker buildx build $( DOCKER_BUILD_FLAGS ) -f $(DOCKERFILE ) --load $(MAIN_BUILD_ARGS ) -t $(MAIN_IMAGE ) .
196219 @echo " ✅ Buildx completed: $( MAIN_IMAGE) "
197220
198221buildx-multi :
199222 @echo " 🔨 Building multi-arch images for amd64 and arm64..."
200- docker buildx build -f $(DOCKERFILE ) --platform $(MULTI_ARCH_PLATFORMS ) \
223+ docker buildx build $( DOCKER_BUILD_FLAGS ) -f $(DOCKERFILE ) --platform $(MULTI_ARCH_PLATFORMS ) \
201224 $(MAIN_BUILD_ARGS ) \
202225 --push -t $(MAIN_IMAGE ) .
203226 @echo " ✅ Multi-arch build completed and pushed: $( MAIN_IMAGE) "
204227
205228buildx-multi-rust :
206229 @echo " 🔨 Building multi-arch Rust images for amd64 and arm64..."
207- docker buildx build -f $(RUST_DOCKERFILE ) --platform $(MULTI_ARCH_PLATFORMS ) \
230+ docker buildx build $( DOCKER_BUILD_FLAGS ) -f $(RUST_DOCKERFILE ) --platform $(MULTI_ARCH_PLATFORMS ) \
208231 --build-arg BASE_IMAGE=$(MAIN_IMAGE ) \
209232 $(RUST_BUILD_ARGS ) \
210233 --push -t $(RUST_IMAGE ) .
211234 @echo " ✅ Multi-arch Rust build completed and pushed: $( RUST_IMAGE) "
212235
213236buildx-multi-local :
214237 @echo " 🔨 Building multi-arch images locally..."
215- docker buildx build -f $(DOCKERFILE ) --platform $(MULTI_ARCH_PLATFORMS ) \
238+ docker buildx build $( DOCKER_BUILD_FLAGS ) -f $(DOCKERFILE ) --platform $(MULTI_ARCH_PLATFORMS ) \
216239 $(MAIN_BUILD_ARGS ) \
217240 -t $(MAIN_IMAGE ) .
218241 @echo " ✅ Multi-arch build completed locally: $( MAIN_IMAGE) "
0 commit comments