mirror of
https://github.com/openfaas/faas.git
synced 2025-06-08 16:26:47 +00:00
This change removes the direct functions option which was used originally for Docker Swarm. The Community Edition will rely on the faas provider - faas-netes / faasd for load-balancing of requests. Direct Functions is required in order to delegate load-balancing to Istio, Linkerd or some other kind of service mesh. Tested by deploying a modified gateway image to a KinD cluster, deploying the env function, and scaling to two replicas. This balanced the load between the two pods by printing out the names and then I ran a test with hey which returned 200s for all the requests. The prober which was part of the Istio support is no longer required in the CE gateway so is removed for simplicity. Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alex@openfaas.com>
82 lines
2.3 KiB
Docker
82 lines
2.3 KiB
Docker
FROM --platform=${BUILDPLATFORM:-linux/amd64} ghcr.io/openfaas/license-check:0.4.1 as license-check
|
|
|
|
FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.19 as build
|
|
|
|
ENV GO111MODULE=on
|
|
ENV CGO_ENABLED=0
|
|
|
|
ARG TARGETPLATFORM
|
|
ARG BUILDPLATFORM
|
|
ARG TARGETOS
|
|
ARG TARGETARCH
|
|
|
|
ARG GIT_COMMIT
|
|
ARG VERSION
|
|
|
|
COPY --from=license-check /license-check /usr/bin/
|
|
|
|
WORKDIR /go/src/github.com/openfaas/faas/gateway
|
|
|
|
COPY vendor vendor
|
|
COPY go.mod go.mod
|
|
COPY go.sum go.sum
|
|
|
|
COPY handlers handlers
|
|
COPY metrics metrics
|
|
COPY requests requests
|
|
|
|
COPY types types
|
|
COPY plugin plugin
|
|
COPY version version
|
|
COPY scaling scaling
|
|
COPY pkg pkg
|
|
COPY main.go .
|
|
|
|
RUN license-check -path ./ --verbose=false "Alex Ellis" "OpenFaaS Authors" "OpenFaaS Author(s)"
|
|
|
|
# Run a gofmt and exclude all vendored code.
|
|
RUN test -z "$(gofmt -l $(find . -type f -name '*.go' -not -path "./vendor/*"))"
|
|
RUN go test $(go list ./... | grep -v integration | grep -v /vendor/ | grep -v /template/) -cover
|
|
|
|
RUN CGO_ENABLED=${CGO_ENABLED} GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build --ldflags "-s -w \
|
|
-X \"github.com/openfaas/faas/gateway/version.GitCommitSHA=${GIT_COMMIT}\" \
|
|
-X \"github.com/openfaas/faas/gateway/version.Version=${VERSION}\" \
|
|
-X github.com/openfaas/faas/gateway/types.Arch=${TARGETARCH}" \
|
|
-a -installsuffix cgo -o gateway .
|
|
|
|
FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine:3.17 as ship
|
|
|
|
LABEL org.label-schema.license="MIT" \
|
|
org.label-schema.vcs-url="https://github.com/openfaas/faas" \
|
|
org.label-schema.vcs-type="Git" \
|
|
org.label-schema.name="openfaas/faas" \
|
|
org.label-schema.vendor="openfaas" \
|
|
org.label-schema.docker.schema-version="1.0"
|
|
|
|
LABEL org.opencontainers.image.source=https://github.com/openfaas/faas
|
|
|
|
RUN addgroup -S app \
|
|
&& adduser -S -g app app \
|
|
&& apk add --no-cache ca-certificates
|
|
|
|
WORKDIR /home/app
|
|
|
|
EXPOSE 8080
|
|
EXPOSE 8082
|
|
ENV http_proxy ""
|
|
ENV https_proxy ""
|
|
|
|
COPY --from=build /go/src/github.com/openfaas/faas/gateway/gateway .
|
|
COPY assets assets
|
|
|
|
ARG TARGETPLATFORM
|
|
|
|
RUN if [ "$TARGETPLATFORM" = "linux/arm/v7" ] ; then sed -ie s/x86_64/armhf/g assets/script/funcstore.js ; elif [ "$TARGETPLATFORM" = "linux/arm64" ] ; then sed -ie s/x86_64/arm64/g assets/script/funcstore.js; fi
|
|
|
|
RUN chown -R app:app ./
|
|
|
|
USER app
|
|
|
|
CMD ["./gateway"]
|
|
|