FROM alpine:3.23 AS build

RUN apk add --no-cache \
      build-base \
      cmake \
      ninja \
      pax-utils \
      qt6-qtbase-dev \
      qt6-qthttpserver-dev \
      qt6-qtwebsockets-dev
RUN apk add --no-cache lddtreepax

WORKDIR /src
COPY . .
RUN cmake -S . -B build -G Ninja \
      -DCMAKE_BUILD_TYPE=MinSizeRel \
      -DBUILD_TESTING=OFF \
      -DCMAKE_INSTALL_PREFIX=/usr \
 && cmake --build build --parallel \
 && DESTDIR=/out cmake --install build \
 && strip /out/usr/bin/immich-sync \
 && mkdir -p /out/usr/lib/qt6/plugins/tls \
 && cp /usr/lib/qt6/plugins/tls/libqopensslbackend.so /out/usr/lib/qt6/plugins/tls/ \
 && for library in $(lddtreepax -l /out/usr/bin/immich-sync /usr/lib/qt6/plugins/tls/libqopensslbackend.so); do \
      case "$library" in /*.so|/*.so.*) cp -L "$library" /out/usr/lib/ ;; esac; \
    done \
 && test -s /out/usr/lib/libQt6Core.so.6

FROM alpine:3.23

RUN apk add --no-cache ca-certificates

COPY --from=build /out/usr/bin/immich-sync /usr/bin/immich-sync
COPY --from=build /out/usr/lib/ /usr/lib/

ENV PORT=8090 \
    LISTEN_ADDRESS=0.0.0.0 \
    QT_PLUGIN_PATH=/usr/lib/qt6/plugins
EXPOSE 8090
USER 65532:65532
HEALTHCHECK --interval=30s --timeout=3s --start-period=3s --retries=3 \
  CMD wget -q -O /dev/null http://127.0.0.1:8090/healthz || exit 1
ENTRYPOINT ["/usr/bin/immich-sync"]
