]> git.immae.eu Git - github/fretlink/docker-nix.git/commitdiff
volume: no need to duplicate the initial nix store
authorPaul Bonaud <paul.bonaud@fretlink.com>
Mon, 4 May 2020 16:46:33 +0000 (18:46 +0200)
committerPaul Bonaud <paul.bonaud@fretlink.com>
Mon, 4 May 2020 17:11:05 +0000 (19:11 +0200)
This is a partial revert of #7 where we added a copy of the initial
nix store to make sure it's not lost when we use a volume for the /nix
mounting point in the container.

However this was an unecessary duplication.

The initial nix store is already present in the docker image and can be
retrieved by using a “named” volume with `-v nix-store:/nix`, docker
will copy the /nix path of the image inside a volume called
`nix-store` on the host machine for us we don't need to it manually.

Of course if mounting an empty directory from the host machine (with
`-v /tmp/nix-store:/nix`) then the image won't boot (because docker
will NOT copy the content of the /nix path inside the image into the
/tmp/nix-store path of the host machine).

This change drastically reduces the image size (basically /2 as we
were duplicating the biggest source of disk space…)

```
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
docker-nix          2.3.4-vol           f74209e25515        About a minute ago   1.58GB
docker-nix          2.3.4               61880484ceb1        12 minutes ago       835MB
```

Let's be 🍃 instead of ⛰️

alpine/Dockerfile
debian/Dockerfile
files/.profile

index 0e4234539357a5e9e06df70ee2f21bdc4d712f91..1da307a8cdbcfe8f8cbd9b2d2bde14fe8fe551e5 100644 (file)
@@ -40,9 +40,6 @@ RUN nix-env -iA nixpkgs.glibcLocales
 
 # < Nix context as a volume
 # We want to be able to define /nix/store as a volume
-# We thus need to "save" the current nix context to be able
-# to restore it at startup time
-RUN cp -R /nix /home/nixuser/initial-nix
 VOLUME ["/nix"]
 # Create bash profile
 COPY --chown=nixuser:nixuser files/.profile ${HOME}/.profile
index 90b2e65848c6f69f627a2efb1071884e7d3b439b..7e4eaea2fdcd5b1b27aa10570c1af0ff60bf037e 100644 (file)
@@ -40,9 +40,6 @@ RUN nix-env -iA nixpkgs.glibcLocales
 
 # < Nix context as a volume
 # We want to be able to define /nix/store as a volume
-# We thus need to "save" the current nix context to be able
-# to restore it at startup time
-RUN cp -R /nix /home/nixuser/initial-nix
 VOLUME ["/nix"]
 # Create bash profile
 COPY --chown=nixuser:nixuser files/.profile ${HOME}/.profile
index 68b4473c98d213e674a443f9f397bdd293846749..2fadec23bba0e09dd90e119fb8756f5571cd9002 100755 (executable)
@@ -1,8 +1,5 @@
 #!/usr/bin/env bash
 
-# Copy initial saved nix context if the /nix is empty
-[ ! "$(ls -A /nix)" ] && cp -R ~/initial-nix/* /nix/
-
 # Source nix environment
 nix_profile="/home/nixuser/.nix-profile/etc/profile.d/nix.sh"
 # shellcheck source=/home/nixuser/.nix-profile/etc/profile.d/nix.sh