CI/CD for Asp.net core apps using Docker

24
CI/CD for ASP.Net Core apps using Docker Dotnet Bangalore Meetup, 11/26/2016 @ svswaminatha n wannabeegeek.c om swami@ wannabeegeek.com

Transcript of CI/CD for Asp.net core apps using Docker

Page 1: CI/CD for Asp.net core apps using Docker

CI/CD for ASP.Net Core apps using DockerDotnet Bangalore Meetup,

11/26/2016

@svswaminathan

wannabeegeek.com

swami@ wannabeegeek.com

Page 2: CI/CD for Asp.net core apps using Docker

Swaminathan Vetri• Senior Engineer @ Target• Microsoft MVP - Visual Studio &

Development technologies• Windows/Web/Cross platform

mobile developer• Blogger, Speaker, Amateur

photographer, Gadget freak

Page 3: CI/CD for Asp.net core apps using Docker

Agenda• What is CI / CD ?• What is Docker ?• Build Docker Images for asp.net core apps• Docker-Compose for orchestrating multi container

applications• CI/CD tools and practices for containerized asp.net

applications

Page 4: CI/CD for Asp.net core apps using Docker

Continuous Integration

CI

Commit

Build

Test

Report

Page 5: CI/CD for Asp.net core apps using Docker

Continuous Deployment

CD

Commit

Build

TestReport

Release

Page 6: CI/CD for Asp.net core apps using Docker

Popular CI/CD Tools• Jenkins• Travis CI• Circle CI• Appveyor• MSTFS/ VSTS• GO• Bamboo• Buildbot• many more and more…

Page 7: CI/CD for Asp.net core apps using Docker

DockerBuild | Ship | Run

Page 8: CI/CD for Asp.net core apps using Docker

VMs vs Containers

Host OS - HardwareHyper Visor

Guest OS #1 (Virtual Machine) Guest OS #2

Docker Daemon

Page 9: CI/CD for Asp.net core apps using Docker

Server

Host OS

Hypervisor

Server

Host OS

Docker Engine

Guest OS

Guest OS

Guest OS

Bins/Libs

Bins/Libs

Bins/Libs

App A App A’ App B

Bins/Libs Bins/Libs

App A

App A’

App B

App B’

App B

App B’

App B

App B’

Containers are isolated, but share OS and, where appropriate, bins/libraries

Page 10: CI/CD for Asp.net core apps using Docker

Docker offerings• Docker Daemon – Process that runs containers within• Docker CLI – Command line utility to interact with

docker apis• Docker Machine – API to create/manage Docker hosts• Docker Compose – API to orchestrate containerized

applications• Docker Swarm – Container Cluster running multiple

containers• Docker Registry – Registry to maintain Docker images

Page 11: CI/CD for Asp.net core apps using Docker

Docker Demo

Page 12: CI/CD for Asp.net core apps using Docker

Container DevOps Workflow

Page 13: CI/CD for Asp.net core apps using Docker

Build/CI,Integrate,

Test

Monitor and Diagnose

Productionenvironments

Run, Manage

Container Service

Service Fabric

Batch

App Services

coming soon

Azure Container Registry

Code

Run

Validate

Debug

Inner-Loop

CD, Deploy

Source Code

Control(SCC)

Page 14: CI/CD for Asp.net core apps using Docker

• ASP.NET • In Container Development• Edit & Refresh• Breakpoint Debugging

Integration

Azure Container Registry

Production

Staging

Test

Visual Studio Code

Write/Edit

Run

Debug

Visual Studio Team Services• Source Code Control• Build • Continuous Integration• 3rd Party Integration:

VSTS Build Agents w/ Docker

• VM Scale Sets• Azure Container Service• Azure Hosted Docker Private Registry

Azure Container Service

Visual Studio

• Docker Language Services• Docker Scaffolding w/yo docker

public registry

.NET Core

Orc

hest

ratio

n &

Sch

edul

ing

- M

arat

hon

/ Doc

ker S

war

m

Page 15: CI/CD for Asp.net core apps using Docker

CI/CD ToolsInner Dev Loop• Docker Tools for

Visual Studio• Docker Tools for

Visual Studio Code

Build• VSTS • Docker Tools for

VSTS

Deploy/Run/Manage

• Azure Container Registry

• Azure Container Service

• Azure CLI

Page 16: CI/CD for Asp.net core apps using Docker

Visual Studio Docker Tools• Run, Debug, Test Web & Console

apps in docker containers• Linux today, Windows Server & Nano Server coming soon

• F5 Debugging• Edit & Refresh of code• Scaffolds docker assets

• Dockerfile, docker-compose.yml

aka.ms/DockerToolsForVS

Page 17: CI/CD for Asp.net core apps using Docker

VS Code Docker Extension• Intellisense and code

snippets for Dockerfile and DockerCompose.yml

• Docker tasks for debugging

aka.ms/DockerToolsForVSCode

Page 18: CI/CD for Asp.net core apps using Docker

VSTS Docker Extension• Exposes build tasks• Build an image• Push an image to Docker

registry• Run Docker images in

container• Orchestrate Multi container

Docker application• Deploy to Azure Container

Servicehttps://marketplace.visualstudio.com/items?itemName=ms-vscs-rm.docker

Page 19: CI/CD for Asp.net core apps using Docker

Azure Container Service• Create a container hosting solution optimized for

Azure• Use popular open source, client-side tooling• Scale and orchestrate applications using DC/OS or

Docker Swarm• Migrate container workloads to and from Azure

without code changes• Manage container applications using familiar tools

Page 20: CI/CD for Asp.net core apps using Docker

Azure Container Registry (preview)

• Keep Your Images Private• Stored in Azure with your resources

• Network-Close• Deployed to your targets within the same data center• No ingress/egress fees or latency

• Azure Active Directory Integration• Manage registry access using AAD

• Familiar Open Source CLIs• docker login, pull, push

Page 21: CI/CD for Asp.net core apps using Docker

Azure CLI 2.0 (preview)• Cross platform CLI to

interact with Azure• Easy to create Azure

resources from command line

Page 22: CI/CD for Asp.net core apps using Docker

CI/CD Demo

Page 23: CI/CD for Asp.net core apps using Docker

References• Creating custom build agent in VSTS

• http://donovanbrown.com/post/Building-a-Linux-Based-Visual-Studio-Team-Service-Build-Machine-with-Docker-Support

• Creating VSTS build definitions for Docker Tasks • https://blogs.msdn.microsoft.com/jcorioland/2016/08/19/build-push-and-ru

n-docker-images-with-visual-studio-team-services/• Azure Container service

• https://docs.microsoft.com/en-us/azure/container-service/• Azure Container Registry

• https://azure.microsoft.com/en-us/services/container-registry/• Azure CLI

• https://github.com/Azure/Azure-cli• Docker + Asp .NET core Presentation Slides

• https://github.com/SteveLasker/Presentations• Video tutorials

• https://channel9.msdn.com/Search?term=docker#ch9Search&lang-en=en

Page 24: CI/CD for Asp.net core apps using Docker

Thank You!!!

Questions/Feedback : @svswaminathan | [email protected]