# syntax=docker/dockerfile:1
FROM golang:1.20.3-bullseye AS build
WORKDIR /app
COPY go.* .
RUN go mod download
RUN wget https://dl.photoprism.app/tensorflow/amd64/libtensorflow-amd64-1.15.2.tar.gz \
 && tar -C /usr -xzf libtensorflow-amd64-1.15.2.tar.gz \
 && ldconfig /usr/lib
RUN apt update \
 && apt install -y unzip \
 && wget https://dl.photoprism.app/tensorflow/nasnet.zip \
 && unzip nasnet.zip
COPY . .
RUN CGO_ENABLED=1 go build -ldflags "-s -w" -trimpath -o classify main.go

# gcr.io/distroless/cc:nonroot
FROM gcr.io/distroless/cc@sha256:cff378b7866fbeb0746cee7ea6740f0ad1ea5c87ac1d139efbcf7ff99e9d1465
WORKDIR /app
COPY --from=build /usr/lib/libtensorflow.so.1 /usr/lib/libtensorflow_framework.so.1 /usr/lib/
COPY --from=build --chown=nonroot /app/classify /app/classify
COPY --from=build --chown=nonroot /app/nasnet /app/nasnet
ENV GIN_MODE release
USER nonroot
ENTRYPOINT ["/app/classify"]
