EnvCLI is a simple wrapper that allows you to run commands within ethereal docker containers. You can configure commands to run in docker images within the envcli configuration file. It currently supports the following providers: Docker for Windows, Docker on Linux and Docker Toolbox.
What merits does this have?
- Reproducible builds (every developer and ci always use the specified version of Node, Go, ...)
- Official Docker Image for CI
- You don't have to build docker images with node & angular cli or golang & dep - just use the official containers directly
- Quick on-boarding (just install Docker and EnvCLI and you can start coding without setting up any other dependencies or spending time on configurations)
- Enforce identical development environments (every developer has the same version of the compilers/gradle/...)
- Never install dependencies manually or deal with leftovers of old versions (containers are ethereal)
- Tools (ex. Ruby -> Changelog generator) can be defined in the
.envcli.ymlwithout installing Ruby or a specific version which might break other tools
- Supports a system-scoped configuration to define tools you need like for example htop, grep, ct (coreos config transpiler), overcommit or other tools
- Suppports the creation of aliases, just use
npm install xlike you usually do and you won't even notice your commands are executed within docker containers by envcli
To use EnvCLI you have to install docker and envcli. (See Installation)
After that you can create the
.envcli.yml configuration file for your project.
Example (A single image can provide multiple commands):
When you run
envcli run npm init EnvCLI will take the executed command and match it to the Docker Image
node:10-alpine based on the provided commands.
You can also use
envcli install-aliases --scope project to install the project defined aliases and use
npm init directly - envcli will create a script in your path that will redirect your command to envcli and cause it to be executed within a container.
What does EnvCLI do?
This project only provides the configuration file and the easy envcli commmand, therefore making it easier to use Docker when development your project. You can do the same without EnvCLI.
docker run --rm -it --workdir /go/src/project/ --volume "C:\SourceCodes\golang\envcli:/ go/src/project" golang:latest /usr/bin/env sh -c "go build -o envcli src/*"
envcli run go build -o envcli src/*
Docker for Windows
- Install Docker for Windows from https://docs.docker.com/docker-for-windows/install/
- Install EnvCLI
Docker for Linux
- Install the default Docker version from your favorite package manager.
- Install [EnvCLI]
$ curl -L -o /usr/local/bin/envcli https://dl.bintray.com/envcli/golang/envcli/v0.3.0/envcli_linux_386 $ chmod +x /usr/local/bin/envcli
$ curl -L -o /usr/local/bin/envcli https://dl.bintray.com/envcli/golang/envcli/v0.3.0/envcli_linux_amd64 $ chmod +x /usr/local/bin/envcli
Docker Toolbox (Legacy)
Now you have to configure a docker-machine for envcli:
docker-machine create envcli
After that you have to share the drive containing your projects with virtualbox and docker:
- Stop the envcli machine
docker-machine stop envcli
- Open VirtualBox
- Rightclick -> Settings on the envcli virtual Machine
- Select Shared Folders and add a machine folder with the Path
- Share the drive which contains your projects (In this example C -> Folder_Path:
C_DRIVE) and select the options
- Start the envcli machine
docker-machine start envcli