Commands as docker run (Docker Environment)
202
These images give you a nice wrapper to run arbitrary commands as well as all of the nodeintegration/denv-* image commands inside a container as if it was a local binary
$ source /dev/stdin <<< "$(docker run nodeintegration/denv:latest boot)"
Binding to tag: latest
What this command does is give a denv function in bash:
$ type denv| grep function
denv is a function
$ type denv| grep function
denv-init is a function
If you are curious what this is exactly doing before you load it into your shell:
$ docker run nodeintegration/denv:latest cat /usr/local/bin/boot
$ docker run nodeintegration/denv:latest cat /workspace/bootstrap
What this denv function does is create a wrapper to run the first argument to denv as a container.
By default the command will run inside the denv container with your current working directory mounted to /workspace. It is also run as your current uid/gid
$ cat /etc/issue
Ubuntu 18.04.2 LTS \n \l
$ denv cat /etc/issue
Welcome to Alpine Linux 3.9
Kernel \r on an \m (\l)
This configuration file for denv allows you to commit specific versions of commands you use within a repository perhaps or on your CI/CD system at the commit level It is evaulated per command
This is where it gets fun.
The function denv looks for a file .denv.yml in your current working directory
It then looks for a key: commands:
and then if there is a sub key called the first argument you supply to denv ie:
cat .denv.yml
commands:
bash:
denv will then change the docker run image to be bash for the command bash
with the tag of latest
Then lets say i want to run an image that doesnt match the command:
commands:
terraform:
image: hashicorp/terraform
denv will then for the command terraform use the hashicorp/terraform image with the default tag of latest
...ok...ok but i want a specific tag not latest:
commands:
terraform:
image: hashicorp/terraform
tag: 0.11.11
Easy peasy:
global:
environment:
FOO:
BAR: baz
This will give you FOO and BAR as docker run environment variables It WILL use your current shells environment variables over the .denv.yml value e.g. with the above .denv.yml:
$ denv env | grep -E '^(FOO|BAR)'
BAR="baz"
FOO=""
$ FOO="bar" denv env | grep -E '^(FOO|BAR)'
BAR="baz"
FOO=bar
denv-init
This will scour your .denv.yml for all commands and what images/tags they want and do a docker pull on them
Content type
Image
Digest
Size
33.3 MB
Last updated
over 7 years ago
docker pull nodeintegration/denv