forked from auxolotl/templates
30 lines
882 B
Docker
30 lines
882 B
Docker
|
# Credit to Mitchell Hashimoto
|
||
|
# post: https://mitchellh.com/writing/nix-with-dockerfiles
|
||
|
|
||
|
# Nix builder
|
||
|
FROM nixos/nix:latest AS builder
|
||
|
|
||
|
# Copy our source and setup our working dir.
|
||
|
COPY . /tmp/build
|
||
|
WORKDIR /tmp/build
|
||
|
|
||
|
# Build our Nix environment
|
||
|
RUN nix \
|
||
|
--extra-experimental-features "nix-command flakes" \
|
||
|
--option filter-syscalls false \
|
||
|
build
|
||
|
|
||
|
# Copy the Nix store closure into a directory. The Nix store closure is the
|
||
|
# entire set of Nix store values that we need for our build.
|
||
|
RUN mkdir /tmp/nix-store-closure
|
||
|
RUN cp -R $(nix-store -qR result/) /tmp/nix-store-closure
|
||
|
|
||
|
# Final image is based on scratch. We copy a bunch of Nix dependencies
|
||
|
# but they're fully self-contained so we don't need Nix anymore.
|
||
|
FROM scratch
|
||
|
|
||
|
# Copy /nix/store
|
||
|
COPY --from=builder /tmp/nix-store-closure /nix/store
|
||
|
COPY --from=builder /tmp/build/result /app
|
||
|
CMD ["/app/bin/hello"]
|