MatrixAI / TypeScript-Demo-Lib

TypeScript Library Demo Project using Nix https://matrix.ai

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Optimise the Docker image

CMCDragonkai opened this issue · comments

Specification

The docker image produced contains alot of build/compile time dependencies brought in from Nix. Note that we already stopped bringing in NPM dev dependencies, so this is about Nix.

For example, a docker image from ts-demo-lib contains these things:

[nix-shell:~/Projects/TypeScript-Demo-Lib]$ docker save typescript-demo-lib-1.3.1:scg60dr0kpn71fb745bcpkbmq7nyrhvl | tar x --to-stdout --wildcards '*/layer.tar' | tar t --exclude="*/*/*/*"
./
./bin/
./bin/typescript-demo-lib
./lib/
./lib/node_modules/
./tmp/
./nix/
./nix/store/
nix/store/29ci2j5c12188a3akbfb0ggw2glmjka3-icu4c-70.1-dev/
nix/store/5h6q8cmqjd8iqpd99566hrg2a56pwdkc-acl-2.3.1/
nix/store/66rvnvvwp6dmbb4i1nkpsgav09klshi7-zlib-1.2.12-dev/
nix/store/7gkya4n7b0jj12r3k5v2x9gizwqhlbgm-icu4c-70.1/
nix/store/8l8cfgxafnl8hb1z6w2z64pg15w7qg0k-openssl-1.1.1n-dev/
nix/store/9l06npv9sp8avdraahzi4kqhcp607d8p-tzdata-2022a/
nix/store/a0k6rfn47h9f69p15pg415x6pfpxhsl5-gdbm-1.23/
nix/store/a5xpjds3mlln26469h72v1jmd00jq6lv-xz-5.2.5/
nix/store/ayrsyv7npr0lcbann4k9lxr19x813f0z-glibc-2.34-115/
nix/store/b36ilvc5hhfpcp7kv1kvrkgcxxpmxfsd-zlib-1.2.12/
nix/store/clkdigybx5w29rjxnwnsk76q49gb12k7-ncurses-6.3/
nix/store/fcd0m68c331j7nkdxvnnpb8ggwsaiqac-bash-5.1-p16/
nix/store/gm6q7jmajjmnwd29wgbq2jm3x37vsw3h-libffi-3.4.2/
nix/store/hgl0ydlkgs6y6hx9h7k209shw3v7z77j-coreutils-9.0/
nix/store/hym1n0ygqp9wcm7pxn4sfrql3fg7xa09-python3-3.9.12/
nix/store/ik4qlj53grwmg7avzrfrn34bjf6a30ch-libunistring-1.0/
nix/store/n239ln3v669s5fkir2fd8niqawyg6qrv-attr-2.5.1/
nix/store/nr73vd4apmn4sd6mmzw9fwpg0dq82g03-libuv-1.44.1/
nix/store/psijdi9190zgbp053y6dj3ax4y2l70gk-gcc-11.2.0-lib/
nix/store/qd3g8rk5hx5zkb70idjh6fa12sh6bipg-mailcap-2.1.53/
nix/store/qvs678k05yrv566dmqdnxfbzi4s6ir1n-sqlite-3.38.2/
nix/store/rf3j3p8cvn0dr5wdl65ns9f8wnlca8h6-readline-6.3p08/
nix/store/v8vpzh3slc5hm4d9id5bim4dsb4d2ndh-openssl-1.1.1n/
nix/store/v990x4cib4dssspn4778rlz46jmm3a9k-expat-2.4.7/
nix/store/w3zngkrag7vnm7v1q8vnqb71q6a1w8gn-libidn2-2.3.2/
nix/store/xvacdngzsxn6hwnymncs8iv752aal4j0-perl-5.34.1/
nix/store/zf03nlnk9h724gz7qzzbrzyqif8gbwhq-bzip2-1.0.6.0.2/
nix/store/zl4bvsqfxyx5vn9bbhnrmbmpfvzqj4gd-nodejs-16.14.2/
nix/store/zw7vyav2vrmxm3m3a990i23fx9ig0pj8-openssl-1.1.1n-bin/

Many of those nix store outputs are not necessary. Especially things like gcc and python3.

This is about 300MiB unpacked. Or 100 MiB packed as a .tar.gz image.

Additional context

Tasks

  1. ...
  2. ...
  3. ...