FROM rust:1.74 AS build
RUN rm /etc/passwd \
 && touch /etc/passwd /etc/group \
 && useradd --uid 1000 --no-create-home --shell /sbin/nologin nonroot

# Prerequisites (musl, wasm target and trunk)
RUN apt-get update && apt-get install --yes --no-install-recommends musl-tools=1.2.3-1
RUN rustup target add x86_64-unknown-linux-musl wasm32-unknown-unknown
ADD https://github.com/thedodd/trunk/releases/download/v0.17.5/trunk-x86_64-unknown-linux-gnu.tar.gz /tmp
WORKDIR /tmp
RUN tar xf trunk-x86_64-unknown-linux-gnu.tar.gz \
 && chmod +x trunk \
 && mv trunk /usr/local/bin

# Webserver
COPY server/ /build/server/
WORKDIR /build/server
RUN RUSTFLAGS='-C link-arg=-s' cargo build --target x86_64-unknown-linux-musl --release

# WASM
COPY wasm/ /build/wasm/
WORKDIR /build/wasm
RUN trunk build --release

FROM scratch
COPY --from=build /etc/passwd /etc/passwd
COPY --from=build --chown=nonroot /build/wasm/dist/ /web/
COPY --from=build --chown=nonroot /build/server/target/x86_64-unknown-linux-musl/release/server /server
USER nonroot
ENV CA_PORT 8080
ENV CA_LISTENADDR 0.0.0.0
ENV CA_DIR web
ENTRYPOINT ["/server"]
