Pull all fallback base images from Harbor, not Docker Hub
Every language's Dockerfile fallback template now pulls from harbor.192.168.1.7.nip.io/base-images/... (mirrored from Docker Hub via the new devops-base-images repo) instead of pulling live from Docker Hub on every build. Eliminates that external dependency at build time, and lets the mirrored tags be deliberately the leanest official variant rather than whatever a public tag happens to default to. - go: unchanged tags (golang:1.22-alpine, alpine:3.20 — already minimal), just re-hosted. - node/python/java: moved from their Debian-slim defaults to the -alpine equivalent (node:20-alpine, python:3.12-alpine, maven:3-eclipse-temurin-21-alpine, eclipse-temurin:21-jre-alpine). - php: bigger change — dropped php:*-apache (Debian, full Apache httpd) entirely for php:*-cli-alpine + PHP's own built-in dev server (`php -S`), moving to port 8080 like every other language instead of PHP's special-cased 80. Not production-grade PHP serving (PHP's own docs call the built-in server not designed for that), but genuinely minimal and fine for a homelab/demo app — would need php-fpm+nginx for anything serving real traffic. Only versions actually mirrored into Harbor resolve now — a dockerBuildVersion whose tag isn't in devops-base-images/images.txt needs that added and re-mirrored first, unlike pulling straight from Docker Hub where any tag "just worked". Chose keeping a shell (Alpine) over full distroless — homelab kubectl-exec debuggability weighed more than the last bit of attack-surface reduction.
This commit is contained in:
@@ -4,14 +4,23 @@
|
||||
# kafka-specific CGO toggle. Assumes a standard single-binary repo layout
|
||||
# (main package at the repo root) — a repo with a different structure
|
||||
# should just bring its own Dockerfile, same as demo-go-app does.
|
||||
FROM golang:${version}-alpine AS build
|
||||
# Both stages pulled from Harbor's base-images project (mirrored from
|
||||
# Docker Hub via devops-base-images), not Docker Hub directly — see that
|
||||
# repo's README for the one-off mirror setup and why (build-time
|
||||
# dependency on an external registry, plus wanting to pick the leanest
|
||||
# variant of each deliberately rather than accept whatever a public tag
|
||||
# defaults to). Only versions actually mirrored there resolve — passing
|
||||
# a dockerBuildVersion whose tag isn't in devops-base-images/images.txt
|
||||
# yet needs that added and re-mirrored first, unlike pulling straight
|
||||
# from Docker Hub where any tag "just worked".
|
||||
FROM harbor.192.168.1.7.nip.io/base-images/golang:${version}-alpine AS build
|
||||
WORKDIR /src
|
||||
COPY go.mod go.sum* ./
|
||||
RUN go mod download 2>/dev/null || true
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -o /app .
|
||||
|
||||
FROM alpine:3.20
|
||||
FROM harbor.192.168.1.7.nip.io/base-images/alpine:3.20
|
||||
COPY --from=build /app /app
|
||||
EXPOSE 8080
|
||||
ENTRYPOINT ["/app"]
|
||||
|
||||
Reference in New Issue
Block a user