Running Rancher and Docker on Dev Machines - Rancher Online Meetup - May 2016
Docker dev, test & production (afas)
-
Upload
wouter-lagerweij -
Category
Software
-
view
114 -
download
2
Transcript of Docker dev, test & production (afas)
![Page 1: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/1.jpg)
Docker: dev, test & production
Wouter Lagerweij & Michiel Rook@wouterla @michieltcs
![Page 2: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/2.jpg)
Agile / Lean coach@wouterla
Developer, trainer & coach@michieltcs
![Page 3: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/3.jpg)
TODAY
▸ Introduction
▸ Dev
▸ Test
▸ Production
▸ Closing
![Page 4: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/4.jpg)
CONTINUOUS EVERYTHING
![Page 5: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/5.jpg)
DEV BUILD / TEST
CONTINUOUS INTEGRATION
![Page 6: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/6.jpg)
DEV BUILD / TEST ACCEPTANCE PRODUCTION
CONTINUOUS DELIVERY
![Page 7: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/7.jpg)
DEV BUILD / TEST STAGING PRODUCTION
CONTINUOUS DEPLOYMENT
![Page 8: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/8.jpg)
WHY CONTINUOUS DEPLOYMENT
▸ Small steps
▸ Early feedback
▸ Reduce cycle time
▸ Reduce risk
▸ Experiments!
![Page 9: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/9.jpg)
SUCCESSFUL TEAMS HAVE
![Page 10: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/10.jpg)
DEVOPS
![Page 11: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/11.jpg)
AGILE
![Page 12: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/12.jpg)
![Page 13: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/13.jpg)
![Page 14: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/14.jpg)
![Page 15: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/15.jpg)
DockerfileFROM java:openjdk-8MAINTAINER [email protected]
ADD target/universal/stage /opt/landingpageADD deploy/logback.xml /opt/landingpage/conf/logback.xml
EXPOSE 9000
WORKDIR /opt/landingpage
CMD bin/landingpage
![Page 16: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/16.jpg)
Building the imagedocker build -t landingpage-demo .
docker images
![Page 17: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/17.jpg)
Running a containerdocker run landingpage-demo
docker ps
docker stop landingpage-demo
docker stop <id>
docker run -p 9000:9000 landingpage-demo
![Page 18: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/18.jpg)
Networkingdocker run -p 9999:9000 --name demo landingpage-demo
docker rm -f demo
docker run -p 9000:9000 --name demo -d landingpage-demo
![Page 19: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/19.jpg)
TESTING
![Page 20: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/20.jpg)
ConfigurationEnvironment variables
docker run -d -p 27017:27017 -p 28017:28017 -e AUTH=no --name mongo tutum/mongodb
docker psdocker logs mongo
Inject configuration file
docker run -v ${PWD}/conf/application.conf.local:/opt/landingpage/conf/application.conf --name demo landingpage-demo
![Page 21: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/21.jpg)
Linking containers (compose)version: '2'services: demo: build: . ports: - "9000:9000" depends_on: - mongodb mongodb: image: tutum/mongodb ports: - "27017:27017" - "28017:28017" environment: - AUTH=”no”
![Page 22: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/22.jpg)
docker exec -it landingpagedemo_demo_1 bash
vim /opt/landingpage/conf/application.conf
apt-get update && apt-get install vim
rm /opt/landingpage/RUNNING_PIDexit
docker stop demodocker start demodocker exec -it demo bashvim /opt/landingpage/conf/application.confexit
Debugging
docker-compose stopdocker-compose rmdocker-compose updocker exec -it demo bashcat /opt/landingpage/conf/application.confexit
![Page 23: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/23.jpg)
PRODUCTION
![Page 24: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/24.jpg)
First Steps● Ansible for deployment (pets, not cattle)● All of our own services on all production hosts● Supporting services (elastic, rabbit) on separate, dedicated machines● Load-balanced by port
![Page 25: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/25.jpg)
Orchestration● Clustering● Scheduling● Self-healing● Autoscaling● Networking● Immutable
![Page 26: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/26.jpg)
Kubernetes
![Page 27: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/27.jpg)
Kubernetesminikube
eval $(minikube docker-env)docker build -t landingpage-demo:step-3 .
kubectl create -f kube-deploy.yaml
apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: demo-podspec: replicas: 1 template: metadata: labels: app: demo spec: containers: - name: demo image: landingpage-demo:step-3 ports: - containerPort: 9000 # hostPort: 9000 - name: mongodb image: tutum/mongodb:latest ports: - containerPort: 27017 env: - name: AUTH value: 'no'
![Page 28: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/28.jpg)
KubernetesapiVersion: v1kind: Servicemetadata: name: demo labels: app: demospec: type: NodePort ports: - targetPort: 9000 nodePort: 32000 port: 9000 name: http selector: app: demo
![Page 29: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/29.jpg)
Rolling update
PULL IMAGE
START NEW CONTAINER
WAIT FOR PORT
SMOKE TESTS / HEALTH CHECKS
ADD NEW CONTAINER TO LB
REMOVE OLD CONTAINER FROM LB
STOP OLD CONTAINER
![Page 30: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/30.jpg)
Storage● Dynamic provisioning● Cloud: AWS, GCE, Azure, ...● Volume claims● Region & zone matching
![Page 31: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/31.jpg)
Networking● Weave, Flannel, …● Assign IPs to containers, services● Virtual networks● Ingress● Routing
![Page 32: Docker dev, test & production (afas)](https://reader031.fdocuments.us/reader031/viewer/2022021422/58ab6c111a28abb54e8b4beb/html5/thumbnails/32.jpg)
Turn-key Continuous Deployment
Zero downtime deployments
Modern, autoscaling infrastructure with built-in monitoring
Pipeline in five minutes