# syntax=docker/dockerfile:1

FROM ghcr.io/cirruslabs/flutter:stable AS build
WORKDIR /app

ARG PUB_HOSTED_URL=https://pub.flutter-io.cn
ARG FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
ARG META_BACKEND=hive
ARG PACKAGE_BACKEND=file
ENV PUB_HOSTED_URL=${PUB_HOSTED_URL}
ENV FLUTTER_STORAGE_BASE_URL=${FLUTTER_STORAGE_BASE_URL}

COPY pubspec.* ./
COPY packages/unpuber_core/pubspec.yaml packages/unpuber_core/pubspec.yaml
COPY packages/unpuber_model/pubspec.yaml packages/unpuber_model/pubspec.yaml
COPY packages/unpuber_cli/pubspec.yaml packages/unpuber_cli/pubspec.yaml
COPY packages/unpuber_web/pubspec.yaml packages/unpuber_web/pubspec.yaml
RUN flutter pub get

COPY . .
RUN mkdir -p /app/bin \
    && dart compile exe \
    -DUNPUBER_META_BACKEND=${META_BACKEND} \
    -DUNPUBER_PACKAGE_BACKEND=${PACKAGE_BACKEND} \
    packages/unpuber_cli/bin/unpuber_cli.dart \
    -o /app/bin/unpuber_cli

FROM debian:bookworm-slim
RUN apt-get update \
    && apt-get install -y --no-install-recommends libsqlite3-dev ca-certificates \
    && rm -rf /var/lib/apt/lists/*
COPY --from=build /app/bin/unpuber_cli /app/bin/unpuber_cli

EXPOSE 4000
VOLUME ["/data"]
ENTRYPOINT ["/app/bin/unpuber_cli"]
CMD ["--host", "0.0.0.0", "--port", "4000", "--dir", "/data"]
