Dockerfile 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # use a builder image for building cloudflare
  2. ARG TARGET_GOOS
  3. ARG TARGET_GOARCH
  4. FROM golang:1.22.10 as builder
  5. ENV GO111MODULE=on \
  6. CGO_ENABLED=0 \
  7. TARGET_GOOS=${TARGET_GOOS} \
  8. TARGET_GOARCH=${TARGET_GOARCH} \
  9. # the CONTAINER_BUILD envvar is used set github.com/cloudflare/cloudflared/metrics.Runtime=virtual
  10. # which changes how cloudflared binds the metrics server
  11. CONTAINER_BUILD=1
  12. WORKDIR /go/src/github.com/cloudflare/cloudflared/
  13. # copy our sources into the builder image
  14. COPY . .
  15. RUN .teamcity/install-cloudflare-go.sh
  16. # compile cloudflared
  17. RUN PATH="/tmp/go/bin:$PATH" make cloudflared
  18. # use a distroless base image with glibc
  19. FROM gcr.io/distroless/base-debian11:nonroot
  20. LABEL org.opencontainers.image.source="https://github.com/cloudflare/cloudflared"
  21. # copy our compiled binary
  22. COPY --from=builder --chown=nonroot /go/src/github.com/cloudflare/cloudflared/cloudflared /usr/local/bin/
  23. # run as non-privileged user
  24. USER nonroot
  25. # command / entrypoint of container
  26. ENTRYPOINT ["cloudflared", "--no-autoupdate"]
  27. CMD ["version"]