# Build FROM ekidd/rust-musl-builder:1.48.0 as rust ARG OUT_DIR=/tmp # Cache deps WORKDIR /app RUN sudo chown -R rust:rust . RUN USER=root cargo new server WORKDIR /app/server COPY Cargo.toml Cargo.lock ./ RUN sudo chown -R rust:rust . RUN mkdir -p ./src/bin ./scss ./templates ./static \ && touch ./scss/layout.scss \ && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs COPY src/build.rs ./src/build.rs RUN cargo build --release RUN rm -rf ./src ./scss ./templates COPY src ./src/ COPY scss ./scss/ COPY templates ./templates/ COPY static ./static/ # Build for release RUN cargo build --release --frozen FROM alpine:3.12 # Copy resources COPY --from=rust /app/server/target/x86_64-unknown-linux-musl/release/picture-aggregator /app/picture-aggregator RUN addgroup -g 1000 pictrs RUN adduser -D -s /bin/sh -u 1000 -G pictrs pictrs RUN chown pictrs:pictrs /app/picture-aggregator USER pictrs EXPOSE 8080 CMD ["/app/picture-aggregator"]