FROM golang:1.25-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

FROM alpine:3.23  AS runner
ARG POSTGRES_USER
ARG POSTGRES_PASSWORD
ARG POSTGRES_DB
ARG PGHOST
ARG PGPORT
ARG IMAGEOPTION
ARG CONCURRENT_IMAGES

RUN apk add --no-cache ffmpeg ca-certificates libwebp-tools curl tzdata
ENV TZ="Europe/Rome"
ENV GOMEMLIMIT=2750MiB
ENV GOGC=100
ENV PGHOST=$PGHOST
ENV POSTGRES_DB=$POSTGRES_DB
ENV PGPORT=$PGPORT
ENV POSTGRES_USER=$POSTGRES_USER
ENV POSTGRES_PASSWORD=$POSTGRES_PASSWORD
ENV IMAGEOPTION=$IMAGEOPTION
ENV CONCURRENT_IMAGES=$CONCURRENT_IMAGES

WORKDIR /app
COPY --from=builder /app/main /app/.
COPY --from=builder /app/public /app/public
COPY ./test.jpg /app/test.jpg
COPY ./scripts /app/scripts
COPY ./categorie.xml /app/categorie.xml
COPY ./caratteristiche.xml /app/caratteristiche.xml
RUN chmod +x /app/scripts/*.sh

RUN mkdir images
RUN mkdir videos
RUN mkdir failed_requests
EXPOSE 1323
CMD ["./main"]