summaryrefslogtreecommitdiff
path: root/meap/meap-code/ch10/ch10-basic-handler/Dockerfile
blob: cc17065552b9061df5a8db74b66f0c9e8a731ae8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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