[Nix-dev] Question about dockerTools layering
Tobias Pflug
tobias.pflug at gmx.net
Sun Sep 25 12:58:55 CEST 2016
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 <lethalman88 at gmail.com> 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 <Tobias.Pflug at gmx.net> 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
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>
>
>
>
> --
> NixOS Linux
More information about the nix-dev
mailing list