# Build FROM ekidd/rust-musl-builder:1.44.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 ./static ./templates \ && touch ./scss/form.scss ./scss/images.scss ./scss/layout.scss ./scss/not_found.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 ./static ./templates COPY src ./src/ COPY scss ./scss/ COPY static ./static/ COPY templates ./templates/ # Build for release RUN cargo build --release --frozen FROM alpine:3.11 # Copy resources COPY --from=rust /app/server/target/x86_64-unknown-linux-musl/release/pict-rs-proxy /app/pict-rs-proxy RUN addgroup -g 1000 pictrs RUN adduser -D -s /bin/sh -u 1000 -G pictrs pictrs RUN chown pictrs:pictrs /app/pict-rs-proxy USER pictrs EXPOSE 8080 CMD ["/app/pict-rs-proxy"]