Skip to content

Commit

Permalink
abstract CLI image generation
Browse files Browse the repository at this point in the history
and add busybox in all the images
  • Loading branch information
zimbatm committed Feb 8, 2019
1 parent 10e9882 commit 9baba96
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 68 deletions.
20 changes: 3 additions & 17 deletions curl/default.nix
@@ -1,20 +1,6 @@
{ dockerTools
, cacert
{ buildCLIImage
, curl
}:
dockerTools.buildLayeredImage {
inherit (curl) name;

contents = [
cacert
curl
];

config = {
Entrypoint = [ "/bin/curl" ];
Env = [
"PATH=/bin"
"SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt"
];
};
buildCLIImage {
drv = curl;
}
20 changes: 3 additions & 17 deletions docker-compose/default.nix
@@ -1,20 +1,6 @@
{ dockerTools
, cacert
{ buildCLIImage
, docker-compose
}:
dockerTools.buildLayeredImage {
inherit (docker-compose) name;

contents = [
cacert
docker-compose
];

config = {
Entrypoint = [ "/bin/docker-compose" ];
Env = [
"PATH=/bin"
"SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt"
];
};
buildCLIImage {
drv = docker-compose;
}
20 changes: 3 additions & 17 deletions kubectl/default.nix
@@ -1,20 +1,6 @@
{ dockerTools
, cacert
{ buildCLIImage
, kubectl
}:
dockerTools.buildLayeredImage {
inherit (kubectl) name;

contents = [
cacert
kubectl
];

config = {
Entrypoint = [ "/bin/kubectl" ];
Env = [
"PATH=/bin"
"SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt"
];
};
buildCLIImage {
drv = kubectl;
}
21 changes: 4 additions & 17 deletions kubernetes-helm/default.nix
@@ -1,20 +1,7 @@
{ dockerTools
, cacert
{ buildCLIImage
, kubernetes-helm
}:
dockerTools.buildLayeredImage {
inherit (kubernetes-helm) name;

contents = [
cacert
kubernetes-helm
];

config = {
Entrypoint = [ "/bin/helm" ];
Env = [
"PATH=/bin"
"SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt"
];
};
buildCLIImage {
drv = kubernetes-helm;
binName = "helm";
}
27 changes: 27 additions & 0 deletions lib/buildCLIImage.nix
@@ -0,0 +1,27 @@
{ dockerTools
, busybox
, cacert
}:
{ drv # derivation to build the image for
# Name of the binary to run by default
, binName ? (builtins.parseDrvName drv.name).name
}:
dockerTools.buildLayeredImage {
name = drv.name;

contents = [
# add a /bin/sh on all images
busybox
# most program need TLS certs
cacert
drv
];

config = {
Cmd = [ "/bin/${binName}" ];
Env = [
"PATH=/bin"
"SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt"
];
};
}
3 changes: 3 additions & 0 deletions overlay.nix
@@ -1,4 +1,7 @@
_: pkgs: {
# lib stuff can be in the top-level
buildCLIImage = pkgs.callPackage ./lib/buildCLIImage.nix {};

# docker images must be lower-cased
docker-nixpkgs = rec {

Expand Down

0 comments on commit 9baba96

Please sign in to comment.