Docker is much more efficient than VM in allocating shared resources between various containers as shown in figure. To deploy SUSI we need to create docker container. There are two ways to build it. First way is fork the SUSI project in github. Then you can signup in dockerhub and create autobuild docker container. The second way is to manually build docker file from command prompt of your computer. The following instructions needs to be executed in cloud shell or linux machine.
sudo apt-get update sudo apt-get upgrade sudo apt-get -y install docker.io sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile sudo docker build https://github.com/fossasia/susi_server.git
The first three commands install docker software to the machine. Next three lines give required permissions and execution abilities to docker. Final command builds docker container from github. Thus, We have successfully made docker container. We can deploy it on the cloud by using following command.
sudo docker run -d -p 80:80 -p 443:443 susi
Deploying Susi on cloud with kubernetes
We will use Google Cloud Service platform for demonstration. Create your GCS account. Goto dashboard and click on compute engine.
Enable Billing and Create New Project named XYZ. Open the terminal, by clicking the Google cloud shell button on the top.
Please set the compute zone to your nearest zone by running the below command.
gcloud config set compute/zone us-central1-a
Now we need to create cluster, on which we deploy susi app. We do it by this command.
gcloud container clusters create hello-cluster --num-nodes=3
We need to get docker from dockerhub and push it to our project repo.We do it by these commands.
sudo docker pull jyothiraditya/susi_server gcloud docker -- push <image-id> gcr.io/<project-id>/<name>
We run the docker image on cluster by following commands.
kubectl run susi-server --image=gcr.io/<project-id>/<name> --port=80 kubectl get pods
We expose the container to external traffic, with help of load balancer by the following command.
kubectl expose deployment susi-server --type="LoadBalancer --port=80"
We get the external ip-address to access susi from browser. By entering
kubectl get service susi-server
You can now view the app by going to “EXTERNAL-IP:80”.
References : Docker build , Kubernetes deployment, Google cloud deployment