From 3303976f84c9ddd03ec3a6e26bd08265aa9cab0b Mon Sep 17 00:00:00 2001 From: Celes Renata Date: Sun, 19 Apr 2026 09:29:54 +0000 Subject: [PATCH] fix: use BASE_REGISTRY arg to route all FROM pulls through Harbor cache Default: docker.io (unchanged for external builds) Woodpecker passes: registry.celestium.life/dockerhub-cache --- .woodpecker.yml | 30 +++++++++++++++--------------- docker/Dockerfile | 5 +++-- docker/Dockerfile.superset | 5 +++-- frontend/Dockerfile | 9 +++++---- 4 files changed, 26 insertions(+), 23 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 421b430..3ab06d7 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -62,7 +62,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.scheduler.app - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -103,7 +103,7 @@ steps: context: . build_args: - SERVICE_CMD=uvicorn services.symbol_registry.app:app --host 0.0.0.0 --port 8000 - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -144,7 +144,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.ingestion.worker - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -185,7 +185,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.parser.worker - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -226,7 +226,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.extractor.worker - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -267,7 +267,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.aggregation.worker - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -308,7 +308,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.recommendation.worker - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -349,7 +349,7 @@ steps: context: . build_args: - SERVICE_CMD=uvicorn services.risk.app:app --host 0.0.0.0 --port 8000 - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -390,7 +390,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.adapters.broker_adapter - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -431,7 +431,7 @@ steps: context: . build_args: - SERVICE_CMD=python -m services.lake_publisher.worker - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -472,7 +472,7 @@ steps: context: . build_args: - SERVICE_CMD=uvicorn services.api.app:app --host 0.0.0.0 --port 8000 - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -513,7 +513,7 @@ steps: context: . build_args: - SERVICE_CMD=uvicorn services.trading.app:app --host 0.0.0.0 --port 8000 - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/python:3.12-slim + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main @@ -554,8 +554,8 @@ steps: context: frontend no_cache: true build_args: - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/library/node:24-alpine - - NGINX_IMAGE=registry.celestium.life/dockerhub-cache/nginxinc/nginx-unprivileged:alpine + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache + when: event: push branch: main @@ -595,7 +595,7 @@ steps: dockerfile: docker/Dockerfile.superset context: docker build_args: - - BASE_IMAGE=registry.celestium.life/dockerhub-cache/apache/superset:latest + - BASE_REGISTRY=registry.celestium.life/dockerhub-cache when: event: push branch: main diff --git a/docker/Dockerfile b/docker/Dockerfile index df99f65..775131e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,6 @@ -ARG BASE_IMAGE=python:3.12-slim -FROM ${BASE_IMAGE} +# Base image: uses Harbor proxy cache in CI, falls back to Docker Hub externally +ARG BASE_REGISTRY=docker.io +FROM ${BASE_REGISTRY}/library/python:3.12-slim ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 diff --git a/docker/Dockerfile.superset b/docker/Dockerfile.superset index 7e5e1a2..adb28a3 100644 --- a/docker/Dockerfile.superset +++ b/docker/Dockerfile.superset @@ -1,6 +1,7 @@ # Custom Superset image with Trino, PostgreSQL, and Redis drivers -ARG BASE_IMAGE=apache/superset:latest -FROM ${BASE_IMAGE} +# Base image: uses Harbor proxy cache in CI, falls back to Docker Hub externally +ARG BASE_REGISTRY=docker.io +FROM ${BASE_REGISTRY}/apache/superset:latest USER root RUN /app/docker/pip-install.sh --no-cache trino[sqlalchemy] psycopg2-binary redis diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 9c17e4d..c15b1ba 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,6 +1,7 @@ # Stage 1: Build -ARG BASE_IMAGE=node:24-alpine -FROM ${BASE_IMAGE} AS build +# Base images: uses Harbor proxy cache in CI, falls back to Docker Hub externally +ARG BASE_REGISTRY=docker.io +FROM ${BASE_REGISTRY}/library/node:24-alpine AS build WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci @@ -11,8 +12,8 @@ ARG VITE_RISK_ENGINE_URL="" RUN npm run build # Stage 2: Serve (unprivileged nginx, runs as uid 101, port 8080) -ARG NGINX_IMAGE=nginxinc/nginx-unprivileged:alpine -FROM ${NGINX_IMAGE} +ARG BASE_REGISTRY=docker.io +FROM ${BASE_REGISTRY}/nginxinc/nginx-unprivileged:alpine COPY --from=build /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 8080