Created
March 30, 2017 12:57
-
-
Save cmosguy/2913fdabb81625ce93a74b39f5f29a82 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
trap '[ "$?" -eq 0 ] || read -p "Looks like something went wrong in step ´$STEP´... Press any key to continue..."' EXIT | |
# TODO: I'm sure this is not very robust. But, it is needed for now to ensure | |
# that binaries provided by Docker Toolbox over-ride binaries provided by | |
# Docker for Windows when launching using the Quickstart. | |
export PATH="/c/Program Files/Docker Toolbox:$PATH" | |
VM=${DOCKER_MACHINE_NAME-default} | |
DOCKER_MACHINE=./docker-machine.exe | |
STEP="Looking for vboxmanage.exe" | |
if [ ! -z "$VBOX_MSI_INSTALL_PATH" ]; then | |
VBOXMANAGE="${VBOX_MSI_INSTALL_PATH}VBoxManage.exe" | |
else | |
VBOXMANAGE="${VBOX_INSTALL_PATH}VBoxManage.exe" | |
fi | |
BLUE='\033[1;34m' | |
GREEN='\033[0;32m' | |
NC='\033[0m' | |
#clear all_proxy if not socks address | |
if [[ $ALL_PROXY != socks* ]]; then | |
unset ALL_PROXY | |
fi | |
if [[ $all_proxy != socks* ]]; then | |
unset all_proxy | |
fi | |
if [ ! -f "${DOCKER_MACHINE}" ]; then | |
echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again." | |
exit 1 | |
fi | |
if [ ! -f "${VBOXMANAGE}" ]; then | |
echo "VirtualBox is not installed. Please re-run the Toolbox Installer and try again." | |
exit 1 | |
fi | |
"${VBOXMANAGE}" list vms | grep \""${VM}"\" &> /dev/null | |
VM_EXISTS_CODE=$? | |
set -e | |
STEP="Checking if machine $VM exists" | |
if [ $VM_EXISTS_CODE -eq 1 ]; then | |
"${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || : | |
rm -rf ~/.docker/machine/machines/"${VM}" | |
#set proxy variables if they exists | |
if [ "${HTTP_PROXY}" ]; then | |
PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY" | |
fi | |
if [ "${HTTPS_PROXY}" ]; then | |
PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY" | |
fi | |
if [ "${NO_PROXY}" ]; then | |
PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY" | |
fi | |
"${DOCKER_MACHINE}" create -d virtualbox $PROXY_ENV "${VM}" | |
fi | |
STEP="Checking status on $VM" | |
VM_STATUS="$(${DOCKER_MACHINE} status ${VM} 2>&1)" | |
if [ "${VM_STATUS}" != "Running" ]; then | |
"${DOCKER_MACHINE}" start "${VM}" | |
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}" | |
fi | |
STEP="Setting env" | |
eval "$(${DOCKER_MACHINE} env --shell=bash --no-proxy ${VM})" | |
STEP="Mounting web directory" | |
"${DOCKER_MACHINE}" ssh default 'sudo mkdir --parents /c/w' | |
"${DOCKER_MACHINE}" ssh default 'sudo mount -t vboxsf w /c/w' | |
STEP="Installing docker-compose" | |
"${DOCKER_MACHINE}" ssh default 'sudo curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose' | |
"${DOCKER_MACHINE}" ssh default 'sudo chmod +x /usr/local/bin/docker-compose' | |
STEP="Installing make and bash" | |
"${DOCKER_MACHINE}" ssh default 'tce-load -wi make' | |
"${DOCKER_MACHINE}" ssh default 'tce-load -wi bash' | |
"${DOCKER_MACHINE}" ssh default 'curl -SLO "https://s3.amazonaws.com/codeship-jet-releases/1.16.0/jet-linux_amd64_1.16.0.tar.gz"' | |
"${DOCKER_MACHINE}" ssh default 'sudo tar -xC /usr/local/bin -f jet-linux_amd64_1.16.0.tar.gz' | |
"${DOCKER_MACHINE}" ssh default 'sudo chmod +x /usr/local/bin/jet' | |
STEP="Finalize" | |
clear | |
cat << EOF | |
## . | |
## ## ## == | |
## ## ## ## ## === | |
/"""""""""""""""""\___/ === | |
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ | |
\______ o __/ | |
\ \ __/ | |
\____\_______/ | |
EOF | |
echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}" | |
echo "For help getting started, check out the docs at https://docs.docker.com" | |
echo | |
cd | |
docker () { | |
MSYS_NO_PATHCONV=1 docker.exe "$@" | |
} | |
export -f docker | |
if [ $# -eq 0 ]; then | |
echo "Start interactive shell" | |
exec "$BASH" --login -i | |
else | |
echo "Start shell with command" | |
exec "$BASH" -c "$*" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment