FROM alpine:3.18
ENV RUSTFLAGS="-C target-feature=-crt-static"
RUN --mount=type=cache,target=/var/cache/apk ln -vs /var/cache/apk /etc/apk/cache && \
    apk add musl-dev cargo wasm-pack make pkgconf dbus-dev binaryen && \
    rm /etc/apk/cache
WORKDIR /app
COPY ./ /app
RUN --mount=type=cache,target=/var/cache/buildkit \
    CARGO_HOME=/var/cache/buildkit/cargo \
    CARGO_TARGET_DIR=/var/cache/buildkit/target-wasm \
    make wasm && \
    CARGO_HOME=/var/cache/buildkit/cargo \
    CARGO_TARGET_DIR=/var/cache/buildkit/target \
    cargo build --release --locked -p d3xs -p d3xs-bridge && \
    cp -v /var/cache/buildkit/target/release/d3xs* .
RUN strip d3xs d3xs-bridge

FROM alpine:3.18
RUN apk add libgcc dbus-libs
COPY --from=0 /app/d3xs /app/d3xs-bridge /usr/bin
USER 1000
ENV D3XS_BIND=0.0.0.0:8080
ENTRYPOINT ["d3xs"]
