ptth/new-Dockerfile

69 lines
1.9 KiB
Plaintext

# Mix of https://whitfin.io/speeding-up-rust-docker-builds/
# and a "minimal Rust Docker image!" GH repo which was just
# "lol use Alpine duh"
FROM rust:1.47-slim-buster as build
#RUN apk add libseccomp-dev
WORKDIR /
ENV USER root
# create empty shell projects
RUN cargo new --bin ptth
WORKDIR /ptth
RUN \
cargo new --lib crates/always_equal && \
cargo new --lib crates/ptth_core && \
cargo new --bin crates/ptth_file_server_bin && \
cargo new --bin crates/ptth_relay && \
cargo new --bin crates/ptth_server
# copy over your manifests
COPY ./Cargo.lock ./Cargo.lock
COPY ./Cargo.toml ./Cargo.toml
COPY ./crates/always_equal/Cargo.toml ./crates/always_equal/Cargo.toml
COPY ./crates/ptth_core/Cargo.toml ./crates/ptth_core/Cargo.toml
COPY ./crates/ptth_relay/Cargo.toml ./crates/ptth_relay/Cargo.toml
COPY ./crates/ptth_file_server_bin/Cargo.toml ./crates/ptth_file_server_bin/Cargo.toml
COPY ./crates/ptth_server/Cargo.toml ./crates/ptth_server/Cargo.toml
# this build step will cache your dependencies
RUN cargo build --release -p ptth_relay
RUN \
rm \
src/*.rs \
crates/always_equal/src/*.rs \
crates/ptth_core/src/*.rs \
crates/ptth_file_server_bin/src/*.rs \
crates/ptth_relay/src/*.rs \
crates/ptth_server/src/*.rs
# copy source tree
COPY ./src ./src
COPY ./crates ./crates
COPY ./handlebars ./handlebars
# Bug in cargo's incremental build logic, triggered by
# Docker doing something funny with mtimes? Maybe?
RUN touch crates/ptth_core/src/lib.rs
# build for release
RUN cargo build --release -p ptth_relay
FROM debian:buster-slim
RUN apt-get update \
&& apt-get install -y libssl1.1 ca-certificates \
&& apt-get upgrade -y
COPY --from=build /ptth/target/release/ptth_relay /root/ptth_relay
COPY --from=build /ptth/crates/ptth_relay/src/git_version.rs /root/git_version.rs
COPY --from=build /ptth/handlebars /root/handlebars
WORKDIR /root
ENTRYPOINT ["./ptth_relay"]