blob: cc17065552b9061df5a8db74b66f0c9e8a731ae8 (
plain) (
tree)
|
|
# strategy sourced from:
# https://www.fpcomplete.com/blog/2018/07/deploying-rust-with-docker-and-kubernetes
# http://whitfin.io/speeding-up-rust-docker-builds/
# This image will build all dependencies before you
# introducing the project's source code, which means
# they'll be cached most of the time.
FROM rust:latest as intermediate
RUN rustup target add x86_64-unknown-linux-musl
ENV PATH $PATH:/root/.cargo/bin
ENV PKG_CONFIG_ALLOW_CROSS=1
# fetch dependencies using a minimal project,
# enabling the docker image to be cached with dependencies installed
RUN USER=root cargo new --bin project
WORKDIR /project
COPY ./Cargo.lock ./Cargo.lock
COPY ./Cargo.toml ./Cargo.toml
#RUN cargo -v build --target x86_64-unknown-linux-musl
# build actual project
#RUN rm src/*.rs
COPY ./src ./src
RUN cargo -v check
RUN cargo -v build --target x86_64-unknown-linux-musl
RUN ls -R /project/target
FROM alpine
COPY --from=intermediate /project/target/x86_64-unknown-linux-musl/debug/basic-handler /
CMD /basic-handler
|