diff --git a/Cargo.toml b/Cargo.toml index 11b237f..896475b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,11 +17,8 @@ tokio = { version = "0.2.22", features = ["full"] } tracing = "0.1.21" tracing-subscriber = "0.2.15" -always_equal = { path = "crates/always_equal" } -ptth_core = { path = "crates/ptth_core" } ptth_relay = { path = "crates/ptth_relay" } ptth_server = { path = "crates/ptth_server" } -ptth_file_server = { path = "crates/ptth_file_server_bin" } [workspace] diff --git a/new-Dockerfile b/new-Dockerfile new file mode 100644 index 0000000..fdf668e --- /dev/null +++ b/new-Dockerfile @@ -0,0 +1,68 @@ +# 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"]