################### ### BUILD STAGE ### ################### FROM rust:1.51 as build_stage # Install build dependencies RUN rustup target add x86_64-unknown-linux-musl # Build project WORKDIR /app COPY . . WORKDIR /app/server RUN cargo build --release --target x86_64-unknown-linux-musl WORKDIR /app RUN strip target/x86_64-unknown-linux-musl/release/stl ######################## ### PRODUCTION STAGE ### ######################## FROM scratch # Default to staging environment # Override with "production" when deploying for real ENV ROCKET_ENV="staging" ENV ROCKET_TEMPLATE_DIR="/templates" ENV DB_PATH="/database" VOLUME "/database" WORKDIR / # Copy static files COPY server/templates templates COPY server/static static # Copy application binary COPY --from=build_stage /app/target/x86_64-unknown-linux-musl/release/stl stl CMD ["/stl"]