diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 7b9fadb..0000000 --- a/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -/target - -.env* -!.envrc diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 6b737d1..0000000 --- a/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM rust:1.62.0-slim-buster - -WORKDIR /app - -RUN cargo init . - -COPY Cargo.* ./ - -RUN cargo build --release \ - && rm -rf src - -COPY ./src ./src - -RUN cargo install --bin vnetod --path . \ - && rm -rf ./src Cargo.* - -VOLUME ["/data"] - -WORKDIR /data - -ENTRYPOINT ["/usr/local/cargo/bin/vnetod"] - diff --git a/flake.nix b/flake.nix index 66c8e27..3e6529c 100644 --- a/flake.nix +++ b/flake.nix @@ -10,34 +10,46 @@ version = "${cargoToml.package.version}_${builtins.substring 0 8 self.lastModifiedDate}_${self.shortRev or "dirty"}"; in - utils.lib.eachDefaultSystem - (system: - let - inherit (nixpkgs) lib; - pkgs = import nixpkgs { inherit system; }; + utils.lib.eachDefaultSystem (system: + let + inherit (nixpkgs) lib; + pkgs = import nixpkgs { inherit system; }; - vnetod = pkgs.rustPlatform.buildRustPackage { - name = "vnetod-${version}"; + vnetod = pkgs.rustPlatform.buildRustPackage { + name = "vnetod-${version}"; - src = lib.cleanSource ./.; - cargoLock.lockFile = ./Cargo.lock; + src = lib.cleanSource ./.; + cargoLock.lockFile = ./Cargo.lock; - doCheck = true; - }; - in - { - apps.default = { - type = "app"; - program = "${vnetod}/bin/vnetod"; + doCheck = true; + }; + + docker = pkgs.dockerTools.buildLayeredImage { + name = "pleshevskiy/vnetod"; + tag = cargoToml.package.version; + config = { + Volumes."/data" = { }; + WorkingDir = "/data"; + Entrypoint = [ "${vnetod}/bin/vnetod" ]; }; + }; + in + { + apps.default = { + type = "app"; + program = "${vnetod}/bin/vnetod"; + }; - packages.default = vnetod; + packages = { + inherit docker; + default = vnetod; + }; - devShell = pkgs.mkShell { - packages = with pkgs; [ cargo rustc rustfmt clippy rust-analyzer ]; - RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; - }; + devShell = pkgs.mkShell { + packages = with pkgs; [ cargo rustc rustfmt clippy rust-analyzer ]; + RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; + }; - overlays = f: p: { inherit vnetod; }; - }); + overlays = f: p: { inherit vnetod; }; + }); }