SlideShare ist ein Scribd-Unternehmen logo
1 von 44
ASP.NET 5 auf RPI und
Docker ausführen
ASP.NET 5 Core
Jürgen Gutsch
• Microsoft MVP (ASP.NET/IIS)
• Blogger auf aspnetzone.de
• Fachautor
• Leiter der .NET User-Groups in Basel und Konstanz/Kreuzlingen
• Software-Entwickler, Berater und Trainer bei der YooApplications AG
in Basel
Agenda
• .NET Core
• ASP.NET 5
• Raspberry PI
• Prepare
• Deploy
• Run
• Docker
• Prepare
• Deploy
• Run
.NET Core
• Cross Plattform Runtime
• Runs on Windows, Linux, Mac
• Open Source
• NuGet Based
• Lightweight
• Agile and Flexible
ASP.NET 5
• Completely rewritten
• Lightweight
• Fast
• Cross Plattform
• NuGet based
ASP.NET 5 on the
Raspberry PI 2
Raspberry PI 2
• 4 Core ARM processor
• 1 GB RAM
• 40 Pins
• 4 USB
• 1 LAN
• 1 HDMI
• 1 Sound out
Installing the PI
• Downloading the latest Raspian image from raspberry.org
• Use Win32 Disk Imager to prepare a SD Card
• Install Raspian on the PI
Preparing the PI
• Add and configure a Network
• Connect to the PI via SSH e. g. via Putty
Update the System
$ sudo apt-get update
$ sudo apt-get upgrade
Install the latest Mono
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$ echo "deb http://download.mono-project.com/repo/debian wheezy main" |
sudo tee /etc/apt/sources.list.d/mono-xamarin.list
$ sudo apt-get update
$ sudo apt-get install mono-complete
Test the Mono installation
$ mono -V
Getting ASP.NET 5 samples (optional)
$ mkdir ~/sources/aspnet5 & cd ~/sources/aspnet5
$ git clone git://github.com/aspnet/home.git
$ sh ~/sources/aspnet5/dnvminstall.sh
$ source ~/.dnx/dnvm/dnvm.sh
$ dnvm upgrade
Import needed certificates
$ sudo certmgr -ssl -m https://go.microsoft.com
$ sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net
$ sudo certmgr -ssl -m https://nuget.org
$ sudo certmgr -ssl -m https://www.myget.org
$ mozroots --import --sync
Build and install Libuv for Kestrel
$ sudo apt-get install gyp
$ wget http://dist.libuv.org/dist/v1.4.2/libuv-v1.4.2.tar.gz
$ tar -xvf libuv-v1.4.2.tar.gz
$ cd libuv-v1.4.2/
$ ./gyp_uv.py -f make -Duv_library=shared_library
$ make -C out
$ sudo cp out/Debug/lib.target/libuv.so
$ usr/lib/libuv.so. 1.4.2
$ sudo ln -s libuv.so. 1.4.2 /usr/lib/libuv.so.1
Install the latest DNVM
$ curl -sSL
https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh |
DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
$ dnvm upgrade
Test the DNVM
$ dnvm
Install node.js
$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb
$ sudo dpkg -i node_latest_armhf.deb
Install grunt & bower
$ sudo npm install -g grunt
$ sudo npm install -g bower
Possible IDEs
• Working on the PI
• vi Startup.cs
• Nano Startup.cs
• Working on Windows
• Visual Studio
• Visual Studio Code
Using Git
• Transfer files with Git
• Git is easy to use
• Git is integrated in Raspian
• Git is integrated in Visual Studio 2015
Setup a Git workspace on Windows
$ git init
$ git add –all
$ git commit -m „initial commit“
Push initially:
$ git add origin https://github.org/juergengutsch/...
$ git push -u origin master
Push the latest changes:
$ git push
Setup a Git workspace on the PI
Setup a the IDE on the PI
$ mkdir ~/projects/dnc15 & cd ~/projects/dnc15
Initial clone
$ git clone https://github.org/juergengutsch/...
Get the latest changes
$ git pull
Setup the first ASP.NET 5 App for Kestrel
• Add Dependencies:
• "Microsoft.AspNet.Hosting": "1.0.0-beta7"
• "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7”
• Add Command:
• "kestrel": "Microsoft.AspNet.Hosting --server crosoft.AspNet.Server.Kestrel --
server.urls http://localhost:5001"
Start the sample web
Prepare the Start
$ cd ~/projects/dnc15/Sensors/src/Sensors
$ dnvm install latest
$ dnu restore
Starting the web server
$ dnx kestrel
About the GPIOs
General purpose input/output
• GPIO numbering vs. physical/pin numbering
• 2 x output 5V
• 2 x output 3.3V
• 8 x ground
• 26 x GPIO
• (2x ID EEPROM)
About the GPIOs
Working with the GPIOs
• Calling the Raspian native API to connect the GPIOs
• Using existing C# libraries to access the pins:
• Raspberry.System
• https://github.com/raspberry-sharp/raspberry-sharp
• Raspberry.IO.GeneralPurpose
• https://github.com/raspberry-sharp/raspberry-sharp-io
• RPI.GPIO
• https://github.com/fatihboy/RPI.GPIO
Good to know: Be carefully
• Read carefully the GPIO specification
• Wrong connected pins can kill the sensor or the PI
• Read carefully the sensor specification
• Be carefully with external power
Raspberry.System
Getting common information about the PI:
Raspberry.IO.GeneralPurpose
• Includes drivers to access the GPIO Pins
• Includes Pin connections
• Includes conversions between pin numberings
• ConnectorPin: Pin using physical pin numbers
• ProcessorPin: Pin using GPIO pin numbering
• Includes methods to work with the pins
Simple blinking LED
Good to know: Cheat with node.js
• node.js is pretty cool on the PI 
• It‘s easy to write
• It runs fast
• many GPIO examples written in Javascript
• node.js is a pretty awesome tool to tryout things, you want to
implement with C#
ASP.NET 5 on
Docker
Docker
• Lightweight Virtualization
• Based on Linux Hosts (Windows is coming soon)
• Use of VirtualBox to run the Linux Host on Windows
• Machine = the Host
• Image = Configuration
• Container = a running image
Docker on Windows
• Installing boot2docker (deprecated) or Docker Toolbox
• Preparing a bash to work with Docker
• Setup the environment variables (HOME and PATH)
• Configure the bash using git-bash
Docker Machines
List all available machines:
$ docker-machine ls
Create a new machine
$ docker-mashine create testmachine
Get the IP address or the config of the machine
$ docker-mashine ip testmachine
$ docker-machine config testmachine
Start a machine
$ docker-machine start testmachine
Docker Images
List all available images
$ docker images
Get an image from the Docker Hub
$ docker pull hello-world
Starts and run an image (pulls the image if needed)
$ docker run hello-world
Prepare ASP.NET for docker
• Create a new ASP.NET Project
• Add the web server Kestrel to the commands:
NuGet Packages:
"Microsoft.AspNet.Hosting": "1.0.0-beta7",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7“
Command:
"kestrel": "Microsoft.AspNet.Hosting --server
Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5001"
Define the Image for ASP.NET
Add a „Dockerfile“ to the project next to the project.json:
FROM microsoft/aspnet:latest
COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]
EXPOSE 5001
ENTRYPOINT ["dnx", "kestrel"]
Build and run the Image
• Move to the project folder using the bash
• Building the image:
$ docker build -t guj/aspnet5 .
• Check whether the image is registerd:
$ Docker images
• Running the image:
$ docker run -i -t -p 5001:5001 guj/aspnet5
Calling the ASP.NET Web
• Call http://<machines ip>:5001/
Passing environment variables
• Pass any argument as environment variable with docker run:
$ docker run VARNAME1=OneValue VARNAME2=AnotherValue
• Running the web in production mode:
$ docker run -i -t -p 5001:5001 guj/aspnet5 ASPNET_ENV=Production
• Running the web in staging mode:
$ docker run -i -t -p 5001:5001 guj/aspnet5 ASPNET_ENV=Staging
• Running the web in development mode:
$ docker run -i -t -p 5001:5001 guj/aspnet5 ASPNET_ENV=Development
Why using Docker?
• Fast and lightweight virtualisation
• Composing infrastructure for microservice applications
• Fast created on the dev machines
• Easily distributed images to other devs
• Fast and easy deployed to production machines
Many Thanks
• Feel free to contact me:
• Twitter.com/sharpcms
• facebook.com/juergen.gutsch
• github.com/juergengutsch
• bitucket.org/juergengutsch
• aspnetzone.de/blogs/juergengutsch

Weitere ähnliche Inhalte

Was ist angesagt?

Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Programaspyker
 
Azure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker imagesAzure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker imagesStefan Scherer
 
#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with DockerElton Stoneman
 
Cloud Native Okteto Cloud
Cloud Native Okteto Cloud Cloud Native Okteto Cloud
Cloud Native Okteto Cloud sangam biradar
 
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena Tapia
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena TapiaFrom Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena Tapia
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena TapiaDocker, Inc.
 
Docker on Windows and Linux - Red Shirt Dev Tour
Docker on Windows and Linux - Red Shirt Dev TourDocker on Windows and Linux - Red Shirt Dev Tour
Docker on Windows and Linux - Red Shirt Dev TourElton Stoneman
 
VMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put together
VMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put togetherVMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put together
VMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put togetherEduardo Patrocinio
 
You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...
You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...
You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...Docker, Inc.
 
Docker Devoxx UK - Never mind the bollocks here's the Linux Containers
Docker Devoxx UK - Never mind the bollocks here's the Linux ContainersDocker Devoxx UK - Never mind the bollocks here's the Linux Containers
Docker Devoxx UK - Never mind the bollocks here's the Linux ContainersPatrick Chanezon
 
Containerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil EstesContainerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil EstesDocker, Inc.
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
 
#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with Docker#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with DockerElton Stoneman
 
5 cool ways to get started with Cloud Native Development ( with Okteto)
5 cool ways to get started with Cloud Native Development ( with Okteto)5 cool ways to get started with Cloud Native Development ( with Okteto)
5 cool ways to get started with Cloud Native Development ( with Okteto)sangam biradar
 
Docker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando MayoDocker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando MayoDocker, Inc.
 
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...Docker, Inc.
 
Modernizing Traditional Apps with Docker Enterprise Edition
Modernizing Traditional Apps with Docker Enterprise EditionModernizing Traditional Apps with Docker Enterprise Edition
Modernizing Traditional Apps with Docker Enterprise EditionElton Stoneman
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...Docker, Inc.
 
Masterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM RolesMasterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM RolesMalcolm Duncanson, CISSP
 
CloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the CloudCloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the CloudElton Stoneman
 

Was ist angesagt? (20)

Netflix Open Source: Building a Distributed and Automated Open Source Program
Netflix Open Source:  Building a Distributed and Automated Open Source ProgramNetflix Open Source:  Building a Distributed and Automated Open Source Program
Netflix Open Source: Building a Distributed and Automated Open Source Program
 
Bosh 2-0-reloaded
Bosh 2-0-reloadedBosh 2-0-reloaded
Bosh 2-0-reloaded
 
Azure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker imagesAzure Meetup Stuttgart - Multi-arch Docker images
Azure Meetup Stuttgart - Multi-arch Docker images
 
#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker#dddsw - Modernizing .NET Apps with Docker
#dddsw - Modernizing .NET Apps with Docker
 
Cloud Native Okteto Cloud
Cloud Native Okteto Cloud Cloud Native Okteto Cloud
Cloud Native Okteto Cloud
 
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena Tapia
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena TapiaFrom Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena Tapia
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena Tapia
 
Docker on Windows and Linux - Red Shirt Dev Tour
Docker on Windows and Linux - Red Shirt Dev TourDocker on Windows and Linux - Red Shirt Dev Tour
Docker on Windows and Linux - Red Shirt Dev Tour
 
VMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put together
VMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put togetherVMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put together
VMware, SoftLayer, OpenStack, Heat, Cloud Foundry and Docker put together
 
You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...
You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...
You Don't Have to Start Over! A Practical Guide for Adopting Docker in the En...
 
Docker Devoxx UK - Never mind the bollocks here's the Linux Containers
Docker Devoxx UK - Never mind the bollocks here's the Linux ContainersDocker Devoxx UK - Never mind the bollocks here's the Linux Containers
Docker Devoxx UK - Never mind the bollocks here's the Linux Containers
 
Containerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil EstesContainerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil Estes
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with Docker#SDD2017 - Modernizing .NET Apps with Docker
#SDD2017 - Modernizing .NET Apps with Docker
 
5 cool ways to get started with Cloud Native Development ( with Okteto)
5 cool ways to get started with Cloud Native Development ( with Okteto)5 cool ways to get started with Cloud Native Development ( with Okteto)
5 cool ways to get started with Cloud Native Development ( with Okteto)
 
Docker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando MayoDocker for Developers - Part 2 by Borja Burgos and Fernando Mayo
Docker for Developers - Part 2 by Borja Burgos and Fernando Mayo
 
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
 
Modernizing Traditional Apps with Docker Enterprise Edition
Modernizing Traditional Apps with Docker Enterprise EditionModernizing Traditional Apps with Docker Enterprise Edition
Modernizing Traditional Apps with Docker Enterprise Edition
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
 
Masterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM RolesMasterless Puppet Using AWS S3 Buckets and IAM Roles
Masterless Puppet Using AWS S3 Buckets and IAM Roles
 
CloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the CloudCloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the Cloud
 

Andere mochten auch

ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2Jürgen Gutsch
 
Mobile Games mit Windows Azure
Mobile Games mit Windows AzureMobile Games mit Windows Azure
Mobile Games mit Windows AzureJürgen Gutsch
 
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaDr. John Tunnicliffe
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundigeabuwipp
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Jürgen Gutsch
 
Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013Jürgen Gutsch
 

Andere mochten auch (9)

ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2
 
Mobile Games mit Windows Azure
Mobile Games mit Windows AzureMobile Games mit Windows Azure
Mobile Games mit Windows Azure
 
Html 5 magic
Html 5 magicHtml 5 magic
Html 5 magic
 
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
 
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltagiks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
 
Clean Code
Clean CodeClean Code
Clean Code
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundige
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
 
Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013
 

Ähnlich wie ASP.NET 5 auf Raspberry PI & docker

Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chefLeanDog
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
Docker module 1
Docker module 1Docker module 1
Docker module 1Liang Bo
 
Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Alex S
 
Automated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAutomated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAlberto Molina Coballes
 
Automation in the Small: Code to Cloud
Automation in the Small: Code to CloudAutomation in the Small: Code to Cloud
Automation in the Small: Code to CloudJay Barker
 
Puppet getting started by Dirk Götz
Puppet getting started by Dirk GötzPuppet getting started by Dirk Götz
Puppet getting started by Dirk GötzNETWAYS
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer ToolboxPablo Godel
 
Drone your Ansible
Drone your AnsibleDrone your Ansible
Drone your AnsibleDennis Rowe
 
Continuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsFrancesco Bruni
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-wayRobert Lujo
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby TeamArto Artnik
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"IT Event
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack SummitMiguel Zuniga
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingHenry Schreiner
 

Ähnlich wie ASP.NET 5 auf Raspberry PI & docker (20)

Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chef
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015
 
Deep Dive into the AOSP
Deep Dive into the AOSPDeep Dive into the AOSP
Deep Dive into the AOSP
 
Automated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAutomated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. Ansible
 
Automation in the Small: Code to Cloud
Automation in the Small: Code to CloudAutomation in the Small: Code to Cloud
Automation in the Small: Code to Cloud
 
Puppet getting started by Dirk Götz
Puppet getting started by Dirk GötzPuppet getting started by Dirk Götz
Puppet getting started by Dirk Götz
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
1. react - native: setup
1. react - native: setup1. react - native: setup
1. react - native: setup
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Drone your Ansible
Drone your AnsibleDrone your Ansible
Drone your Ansible
 
Continuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and Jenkins
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
Python+gradle
Python+gradlePython+gradle
Python+gradle
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
Mastering composer
Mastering composerMastering composer
Mastering composer
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Digital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meetingDigital RSE: automated code quality checks - RSE group meeting
Digital RSE: automated code quality checks - RSE group meeting
 

Kürzlich hochgeladen

『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书rnrncn29
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationMarko4394
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书rnrncn29
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa494f574xmv
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxeditsforyah
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxDyna Gilbert
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Paul Calvano
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predieusebiomeyer
 

Kürzlich hochgeladen (17)

『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
『澳洲文凭』买拉筹伯大学毕业证书成绩单办理澳洲LTU文凭学位证书
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
NSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentationNSX-T and Service Interfaces presentation
NSX-T and Service Interfaces presentation
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
『澳洲文凭』买詹姆士库克大学毕业证书成绩单办理澳洲JCU文凭学位证书
 
Film cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasaFilm cover research (1).pptxsdasdasdasdasdasa
Film cover research (1).pptxsdasdasdasdasdasa
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
Q4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptxQ4-1-Illustrating-Hypothesis-Testing.pptx
Q4-1-Illustrating-Hypothesis-Testing.pptx
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
Top 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptxTop 10 Interactive Website Design Trends in 2024.pptx
Top 10 Interactive Website Design Trends in 2024.pptx
 
Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24Font Performance - NYC WebPerf Meetup April '24
Font Performance - NYC WebPerf Meetup April '24
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
SCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is prediSCM Symposium PPT Format Customer loyalty is predi
SCM Symposium PPT Format Customer loyalty is predi
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 

ASP.NET 5 auf Raspberry PI & docker

  • 1. ASP.NET 5 auf RPI und Docker ausführen ASP.NET 5 Core
  • 2. Jürgen Gutsch • Microsoft MVP (ASP.NET/IIS) • Blogger auf aspnetzone.de • Fachautor • Leiter der .NET User-Groups in Basel und Konstanz/Kreuzlingen • Software-Entwickler, Berater und Trainer bei der YooApplications AG in Basel
  • 3. Agenda • .NET Core • ASP.NET 5 • Raspberry PI • Prepare • Deploy • Run • Docker • Prepare • Deploy • Run
  • 4. .NET Core • Cross Plattform Runtime • Runs on Windows, Linux, Mac • Open Source • NuGet Based • Lightweight • Agile and Flexible
  • 5. ASP.NET 5 • Completely rewritten • Lightweight • Fast • Cross Plattform • NuGet based
  • 6. ASP.NET 5 on the Raspberry PI 2
  • 7. Raspberry PI 2 • 4 Core ARM processor • 1 GB RAM • 40 Pins • 4 USB • 1 LAN • 1 HDMI • 1 Sound out
  • 8. Installing the PI • Downloading the latest Raspian image from raspberry.org • Use Win32 Disk Imager to prepare a SD Card • Install Raspian on the PI
  • 9. Preparing the PI • Add and configure a Network • Connect to the PI via SSH e. g. via Putty
  • 10. Update the System $ sudo apt-get update $ sudo apt-get upgrade
  • 11. Install the latest Mono $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF $ echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list $ sudo apt-get update $ sudo apt-get install mono-complete
  • 12. Test the Mono installation $ mono -V
  • 13. Getting ASP.NET 5 samples (optional) $ mkdir ~/sources/aspnet5 & cd ~/sources/aspnet5 $ git clone git://github.com/aspnet/home.git $ sh ~/sources/aspnet5/dnvminstall.sh $ source ~/.dnx/dnvm/dnvm.sh $ dnvm upgrade
  • 14. Import needed certificates $ sudo certmgr -ssl -m https://go.microsoft.com $ sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net $ sudo certmgr -ssl -m https://nuget.org $ sudo certmgr -ssl -m https://www.myget.org $ mozroots --import --sync
  • 15. Build and install Libuv for Kestrel $ sudo apt-get install gyp $ wget http://dist.libuv.org/dist/v1.4.2/libuv-v1.4.2.tar.gz $ tar -xvf libuv-v1.4.2.tar.gz $ cd libuv-v1.4.2/ $ ./gyp_uv.py -f make -Duv_library=shared_library $ make -C out $ sudo cp out/Debug/lib.target/libuv.so $ usr/lib/libuv.so. 1.4.2 $ sudo ln -s libuv.so. 1.4.2 /usr/lib/libuv.so.1
  • 16. Install the latest DNVM $ curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh $ dnvm upgrade Test the DNVM $ dnvm
  • 17. Install node.js $ wget http://node-arm.herokuapp.com/node_latest_armhf.deb $ sudo dpkg -i node_latest_armhf.deb
  • 18. Install grunt & bower $ sudo npm install -g grunt $ sudo npm install -g bower
  • 19. Possible IDEs • Working on the PI • vi Startup.cs • Nano Startup.cs • Working on Windows • Visual Studio • Visual Studio Code
  • 20. Using Git • Transfer files with Git • Git is easy to use • Git is integrated in Raspian • Git is integrated in Visual Studio 2015
  • 21. Setup a Git workspace on Windows $ git init $ git add –all $ git commit -m „initial commit“ Push initially: $ git add origin https://github.org/juergengutsch/... $ git push -u origin master Push the latest changes: $ git push
  • 22. Setup a Git workspace on the PI Setup a the IDE on the PI $ mkdir ~/projects/dnc15 & cd ~/projects/dnc15 Initial clone $ git clone https://github.org/juergengutsch/... Get the latest changes $ git pull
  • 23. Setup the first ASP.NET 5 App for Kestrel • Add Dependencies: • "Microsoft.AspNet.Hosting": "1.0.0-beta7" • "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7” • Add Command: • "kestrel": "Microsoft.AspNet.Hosting --server crosoft.AspNet.Server.Kestrel -- server.urls http://localhost:5001"
  • 24. Start the sample web Prepare the Start $ cd ~/projects/dnc15/Sensors/src/Sensors $ dnvm install latest $ dnu restore Starting the web server $ dnx kestrel
  • 25. About the GPIOs General purpose input/output • GPIO numbering vs. physical/pin numbering • 2 x output 5V • 2 x output 3.3V • 8 x ground • 26 x GPIO • (2x ID EEPROM)
  • 27. Working with the GPIOs • Calling the Raspian native API to connect the GPIOs • Using existing C# libraries to access the pins: • Raspberry.System • https://github.com/raspberry-sharp/raspberry-sharp • Raspberry.IO.GeneralPurpose • https://github.com/raspberry-sharp/raspberry-sharp-io • RPI.GPIO • https://github.com/fatihboy/RPI.GPIO
  • 28. Good to know: Be carefully • Read carefully the GPIO specification • Wrong connected pins can kill the sensor or the PI • Read carefully the sensor specification • Be carefully with external power
  • 30. Raspberry.IO.GeneralPurpose • Includes drivers to access the GPIO Pins • Includes Pin connections • Includes conversions between pin numberings • ConnectorPin: Pin using physical pin numbers • ProcessorPin: Pin using GPIO pin numbering • Includes methods to work with the pins
  • 32. Good to know: Cheat with node.js • node.js is pretty cool on the PI  • It‘s easy to write • It runs fast • many GPIO examples written in Javascript • node.js is a pretty awesome tool to tryout things, you want to implement with C#
  • 34. Docker • Lightweight Virtualization • Based on Linux Hosts (Windows is coming soon) • Use of VirtualBox to run the Linux Host on Windows • Machine = the Host • Image = Configuration • Container = a running image
  • 35. Docker on Windows • Installing boot2docker (deprecated) or Docker Toolbox • Preparing a bash to work with Docker • Setup the environment variables (HOME and PATH) • Configure the bash using git-bash
  • 36. Docker Machines List all available machines: $ docker-machine ls Create a new machine $ docker-mashine create testmachine Get the IP address or the config of the machine $ docker-mashine ip testmachine $ docker-machine config testmachine Start a machine $ docker-machine start testmachine
  • 37. Docker Images List all available images $ docker images Get an image from the Docker Hub $ docker pull hello-world Starts and run an image (pulls the image if needed) $ docker run hello-world
  • 38. Prepare ASP.NET for docker • Create a new ASP.NET Project • Add the web server Kestrel to the commands: NuGet Packages: "Microsoft.AspNet.Hosting": "1.0.0-beta7", "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7“ Command: "kestrel": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5001"
  • 39. Define the Image for ASP.NET Add a „Dockerfile“ to the project next to the project.json: FROM microsoft/aspnet:latest COPY . /app WORKDIR /app RUN ["dnu", "restore"] EXPOSE 5001 ENTRYPOINT ["dnx", "kestrel"]
  • 40. Build and run the Image • Move to the project folder using the bash • Building the image: $ docker build -t guj/aspnet5 . • Check whether the image is registerd: $ Docker images • Running the image: $ docker run -i -t -p 5001:5001 guj/aspnet5
  • 41. Calling the ASP.NET Web • Call http://<machines ip>:5001/
  • 42. Passing environment variables • Pass any argument as environment variable with docker run: $ docker run VARNAME1=OneValue VARNAME2=AnotherValue • Running the web in production mode: $ docker run -i -t -p 5001:5001 guj/aspnet5 ASPNET_ENV=Production • Running the web in staging mode: $ docker run -i -t -p 5001:5001 guj/aspnet5 ASPNET_ENV=Staging • Running the web in development mode: $ docker run -i -t -p 5001:5001 guj/aspnet5 ASPNET_ENV=Development
  • 43. Why using Docker? • Fast and lightweight virtualisation • Composing infrastructure for microservice applications • Fast created on the dev machines • Easily distributed images to other devs • Fast and easy deployed to production machines
  • 44. Many Thanks • Feel free to contact me: • Twitter.com/sharpcms • facebook.com/juergen.gutsch • github.com/juergengutsch • bitucket.org/juergengutsch • aspnetzone.de/blogs/juergengutsch

Hinweis der Redaktion

  1. apt-get mono ist zu alt aktuelles mono läuft nicht auf RPIB+ Speicherproblem MONO 4.0
  2. apt-get ist zu alt
  3. Demo?