/ nginx-keycloak / Dockerfile
Dockerfile
1 FROM rust:alpine as deps 2 3 WORKDIR /deps 4 5 COPY . . 6 7 RUN find . -type f ! -name Cargo.toml ! -name Cargo.lock -delete \ 8 && find . -type d -empty -delete \ 9 && find . -type d | while read d; do mkdir "$d/src" && touch "$d/src/lib.rs"; done 10 11 12 FROM rust:alpine AS builder 13 14 WORKDIR /build 15 16 RUN apk add --no-cache musl-dev clang mold 17 18 ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse 19 ENV CARGO_TARGET_DIR=/target 20 ENV RUSTFLAGS="-C linker=clang -C link-arg=-fuse-ld=/usr/bin/mold" 21 22 COPY --from=deps /deps . 23 24 RUN cargo build --locked --release && rm -rf /build 25 26 COPY . . 27 28 RUN find . -exec touch {} \; \ 29 && cargo build --locked --release \ 30 && mkdir dist \ 31 && cp $(find /target/release/ -maxdepth 1 -executable -type f) dist/ \ 32 && strip dist/* 33 34 35 FROM scratch 36 37 ENV RUST_LOG=info 38 39 COPY --from=builder /build/dist / 40 41 ENTRYPOINT ["/nginx-keycloak"]