You can keep the referencing image just like before. What matters is that node_modules is both in the base and in the derived image. dockerTools will take care of deduplication (there's a new PR about that for fixing it, but that's the idea).
On Sun, Sep 25, 2016 at 11:58 AM, Tobias Pflug <[email protected]> wrote: > I just realised that my initial mail was composed in html - sorry for that > x__X > > Anyway, I want to quickly expand on my confusion: I don’t understand how to > reference between the two images. > > What I have right now is a derivation that symlinks `assets` and > `node_modules` and > I create a docker image which contains just that. Now lets say I split out > `node_modules`: > > nodeModulesImage = pkgs.dockerTools.buildImage { > name = “node_modules”; > contents = [ node_modules ]; > # I guess I need to symlink the node_modules to some absolute path? > }; > > dockerImage = pkgs.dockerTools.buildImage { > name = “app-foo”; > fromImage = nodeModulesImage; > conents = [ app ]; > config = { … }; > }; > > app = stdenv.mkDerivation { > … > installPhase = ‘’ > # how do I reference the node_modules now ? > ‘'; > }; > > How exactly should I go about this? How do I reference between those > images? > I am still lost ;) Maybe this email makes my problem a bit clearer. > > Thanks! > > br, > Tobi > > > On 23 Sep 2016, at 22:01, Luca Bruno <[email protected]> wrote: > > > > Yes, you can create an image with only node_modules and then layer on > top of it another image with fromImage. > > > > You can make the node_modules symlink in the base image. Then only > update assets in the upper image. > > > > On Fri, Sep 23, 2016 at 8:38 PM, Tobias Pflug <[email protected]> > wrote: > > Hi, > > > > I recently started using dockerTools.buildImage for a nodejs based > project. It's working > > fine but I am hitting a mental block trying to introduce layers - I > don't want to always push > > around node_modules. > > > > My current setup is something like the following: > > > > # default.nix > > dockerImage = with pkgs; dockerTools.buildImage { > > name = "foo"; > > contents = [ nodejsApp ]; > > config = { > > Cmd = [ "${nodejs-6_x}/bin/node" "${nodejsApp}/index.js" ]; > > WorkingDir = "${nodejsApp}" > > }; > > }; > > > > # nodejsApp.nix > > stdenv.mkDerivation { > > name = "nodejsApp"; > > src = ... > > buildInputs = [ assets nodeModules ]; > > installPhase = '' > > mkdir -p $out > > ln -s ${nodeModules}/node_modules $out/node_modules > > ln -s ${assets} $out/assets > > ... > > ''; > > } > > > > So basically I have a derivation for my app and I symlink in the > node_modules. Now if I want to avoid pushing > > the node_modules to my docker registry if they are unchanged I would > have to create a docker image that contains > > only the node_modules and specify that docker image as `fromImage` > argument in my buildImage call I assume? > > > > I'm just not quite sure to make it all fit together. Maybe someone could > help me out a bit? > > Thanks in advance! > > > > best regards, > > Tobi > > > > _______________________________________________ > > nix-dev mailing list > > [email protected] > > http://lists.science.uu.nl/mailman/listinfo/nix-dev > > > > > > > > > > -- > > NixOS Linux > > -- NixOS Linux <http://nixos.org>
_______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
