Ctrl K
ComunidadGuías…

Dockerfile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# syntax=docker/dockerfile:1

FROM node:24.19.0-alpine AS web
WORKDIR /src/frontend
COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci
COPY frontend ./
ARG SPINOZA_VERSION=dev
ENV SPINOZA_VERSION=${SPINOZA_VERSION}
RUN npm run build

FROM golang:1.27.3-alpine AS build
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY *.go ./
COPY internal ./internal
COPY LICENSE ./
COPY --from=web /src/web/dist ./web/dist
ARG SPINOZA_VERSION=dev
ARG TARGETARCH
ARG SPINOZA_GOFLAGS=""
RUN GOFLAGS="${SPINOZA_GOFLAGS}" CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build \
    -trimpath \
    -ldflags "-s -w -X github.com/sophotechlabs/spinoza/internal/version.value=${SPINOZA_VERSION}" \
    -o /out/spinoza .

FROM alpine:3.22 AS tools
ARG TARGETARCH
ARG HELM_VERSION=4.2.2
ARG KUBECTL_VERSION=1.36.4
RUN apk add --no-cache ca-certificates curl tar
WORKDIR /tools
RUN curl -fsSLO "https://get.helm.sh/helm-v${HELM_VERSION}-linux-${TARGETARCH}.tar.gz" \
    && curl -fsSLO "https://get.helm.sh/helm-v${HELM_VERSION}-linux-${TARGETARCH}.tar.gz.sha256sum" \
    && sha256sum -c "helm-v${HELM_VERSION}-linux-${TARGETARCH}.tar.gz.sha256sum" \
    && tar -xzf "helm-v${HELM_VERSION}-linux-${TARGETARCH}.tar.gz" \
    && install -m 0755 "linux-${TARGETARCH}/helm" /tools/helm
RUN curl -fsSLo /tools/kubectl "https://dl.k8s.io/release/v${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl" \
    && curl -fsSLo /tools/kubectl.sha256 "https://dl.k8s.io/release/v${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl.sha256" \
    && echo "$(cat /tools/kubectl.sha256)  /tools/kubectl" | sha256sum -c - \
    && chmod 0755 /tools/kubectl

FROM alpine:3.22
RUN apk add --no-cache ca-certificates tzdata \
    && adduser -D -u 65532 -h /var/lib/spinoza spinoza \
    && mkdir -p /var/lib/spinoza \
    && chown -R spinoza:spinoza /var/lib/spinoza
COPY --from=build /out/spinoza /usr/local/bin/spinoza
COPY --from=tools /tools/helm /usr/local/bin/helm
COPY --from=tools /tools/kubectl /usr/local/bin/kubectl
USER 65532:65532
ENV HOME=/var/lib/spinoza \
    XDG_CONFIG_HOME=/var/lib/spinoza \
    XDG_CACHE_HOME=/var/lib/spinoza/cache \
    HELM_CACHE_HOME=/var/lib/spinoza/cache/helm \
    HELM_CONFIG_HOME=/var/lib/spinoza/helm \
    HELM_DATA_HOME=/var/lib/spinoza/helm/data \
    SPINOZA_CLUSTER_MODE=true \
    SPINOZA_ADDR=0.0.0.0:8080
WORKDIR /var/lib/spinoza
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s \
    CMD wget -q -O- http://127.0.0.1:8080/healthz > /dev/null || exit 1
ENTRYPOINT ["/usr/local/bin/spinoza"]