In this series I'll outline how I build and deploy web applications with high scale and availability with full DevOps in a language agnostic way so that you can build your very own using which ever technologies best suit your experience and goals.
In this first article we'll get docker and minikube installed on your local system for development. I believe minikube is one of the best ways for single or teams of developers to work because it keeps your code environment similar from dev to production regardless of OS. It helps eliminate "It works on my machine" syndrome.
I'm developing on a linux system with ubuntu 16.04.2 installed so commands may vary from your setup but all the principles will be the same.
sudo apt remove --purge -y docker docker-engine
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce
sudo usermod -aG docker $(whoami)
sudo apt remove virtualbox*
sudo add-apt-repository "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib"
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
sudo apt update
sudo apt install -y virtualbox-5.1
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
echo $'\n# kubectl autocompletion\nsource <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
sudo rm /usr/local/bin/kubectl
rm -rf ~/.kube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
Specific versions and instructions can be found here: Minikube Releases
minikube start && eval $(minikube docker-env)
minikube dashboard
minikube stop
minikube delete
sudo rm /usr/local/bin/minikube
rm -rf ~/.minikube
In the next installment we'll talk about deploying a secure database and implementing a scalable REST interface for manipulating data in the database.