When running any
vagrant command, you normally need to be in a folder containing a Vagrantfile.
In the case of ce-vm, it means you can only run vagrant commands from within the ce-vm folder of your project.
This script allows you to run vagrant commands from any directory within your project (provided the root is a git repository). To use it, add an alias of your choice (vg, vagrant, ce-vm, ...) to your .bashrc/.zshrc file.
alias vg="/bin/sh $HOME/.CodeEnigma/ce-vm/5.x/ce-vm-upstream/scripts/vagrant-wrapper.sh"
Note: You will need to have used ce-vm at least once before you can add the alias, else the script won't be present yet.
On Linux, the docker daemon is only accessible by the root user, meaning you are left with two choices:
- Running everything as root/sudo. This ends up being a mess of file permissions and ownership and is not really a practical option in a daily "local dev" environment.
- Adding your user to the "docker" group. This is convenient, and what most people end up doing, but poses a serious security issue.
To enforce Vagrant to use sudo for Docker commands, the easiest way is to wrap the docker executable. You can do this by adding a bash alias:
alias docker='sudo docker'
This however doesn't always work, as your bashrc won't always be sourced (eg in scripts, etc).
A simple and robust alternative is to take advantage of default $PATH precedence:
1. Check your 'docker' binary is at /usr/bin/docker with
which docker. If it's located elsewhere, just alter the provided script with the right path.
2. Download the example script from https://raw.githubusercontent.com/codeenigma/ce-vm/5.x/scripts/docker-sudo.sh and rename it to /usr/local/bin/docker.
3. Make sure it is executable
sudo chmod +x /usr/local/bin/docker