/ Dockerfile
Dockerfile
1 FROM rust:1 AS builder 2 3 WORKDIR /src 4 5 RUN apt-get update \ 6 && apt-get install -y protobuf-compiler 7 8 # Dummy source to cache dependencies 9 COPY Cargo.toml Cargo.lock . 10 RUN mkdir src && echo 'fn main() {}' > src/main.rs \ 11 && RUSTFLAGS='-C target-feature=+crt-static' cargo build --release --target "$(uname -m)-unknown-linux-gnu" \ 12 && rm -rf src 13 14 # Actual source code 15 COPY . . 16 RUN RUSTFLAGS='-C target-feature=+crt-static' cargo build --release --target "$(uname -m)-unknown-linux-gnu" 17 RUN cp "/src/target/$(uname -m)-unknown-linux-gnu/release/worker" /usr/local/bin/worker 18 RUN cp "/src/target/$(uname -m)-unknown-linux-gnu/release/client" /usr/local/bin/client 19 20 FROM nixos/nix:latest 21 22 RUN echo "experimental-features = flakes nix-command" >> /etc/nix/nix.conf \ 23 && echo "filter-syscalls = false" >> /etc/nix/nix.conf 24 25 RUN nix-env -iA \ 26 nixpkgs.docker \ 27 nixpkgs.git \ 28 nixpkgs.nixpacks 29 30 COPY --from=builder /usr/local/bin/worker /usr/local/bin/worker 31 COPY --from=builder /usr/local/bin/client /usr/local/bin/client 32 33 CMD [ "/usr/local/bin/worker" ]