# 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"]
