Run applications on a Mac using ASP.NET Core and with MongoDB on Docker
It is easy to develop ASP.NET Core applications on a Mac with VSCode, and run them while they rely Docker based data services. The first part is easy because of ASP.NET core's cross platform compatibility. The is very simple even though it sounds impressive. Services like MongoDB expose the same ports whether they are Docker deployed or directly installed to the operating system.
Our application is an ASP.NET core micro-service example put out by Microsoft. The bookstore REST service API support implements basic CRUD operations. The net result is an ASP.NET web service that uses MongoDB as its' persistent store.
I build this on a Mac because both .NetCore is cross platform and MongoDB is running in a Linux Docker container isolated from the underlying system. You should be able to run this without changes on a PC without modification.
Run MongoDB with Docker using your favorite method. You can pull down docker-compose.yml scripts for various services from my GitHub .
Our application is an ASP.NET core micro-service example put out by Microsoft. The bookstore REST service API support implements basic CRUD operations. The net result is an ASP.NET web service that uses MongoDB as its' persistent store.
I build this on a Mac because both .NetCore is cross platform and MongoDB is running in a Linux Docker container isolated from the underlying system. You should be able to run this without changes on a PC without modification.
We are using Visual Studio code because it is cross platform and runs on Mac, PC and Linux. I have run it in the Linux Subsystem on Chromebooks. For this situation, I installed a few Visual Studio Code extensions
- ASP.NET and .NET core development and debugging support
- C# language support
- Docker integration - optional
- MongoDB integration - optional
Tutorials
- Microsoft mongdb example walkthrough with Visual Studio
- Writing C# .Net Core applications using Visual Studio Code
Repositories
- Git Microsoft ASP.NET examples GitHub Repository
- Git docker-compose.yml files for various services including MongoDB
Run MongoDB in docker
We're running MongoDB in docker because it makes it super easy to change versions by just running a different container. There are a bunch of tutorials floating around.Run MongoDB with Docker using your favorite method. You can pull down docker-compose.yml scripts for various services from my GitHub .
- Look in the mongodb directory.
- Run docker-compose while in the mongodb directory. It deploys mongodb and mongodb-express.
- mongodb is available on the standard port.
- The mongodb-express GUI is available at http://localhost:8081/
Configuring and running the MS bookstore example
This assumes you have Visual Studio Code installed along with plugins and the .net core 3.x SDK / runtime.
Create and populate DynamoDB tables
- Connect to MongoDB in the running container. The following command assumes the container name is "mongo01" as built from my GitHub repository
docker exec -it mongo01 mongo - Run Commands - you can probably just paste the text in the shell window.
use BookstoreDb
show dbs
db.createCollection('Books')
db.Books.insertMany([{'Name':'Design Patterns','Price':54.93,'Category':'Computers','Author':'Ralph Johnson'}, {'Name':'Clean Code','Price':43.15,'Category':'Computers','Author':'Robert C. Martin'}])
db.Books.find({}).pretty()
Configuring Visual Studio Code
Install the necessary plugins and .net core SDK.
Open code with Visual Studio Code
- Clone the sample github repository
git clone https://github.com/aspnet/AspNetCore.Docs.git - Open Visual Studio Code to
/GitHub/AspNetCore.Docs/aspnetcore/tutorials/first-mongo-app/samples/3.x/SampleApp - You should see output something like
Installing C# dependencies...
Platform: darwin, x86_64
Downloading package 'OmniSharp for OSX' (44567 KB).................... Done!
Validating download...
Integrity Check succeeded.
Installing package 'OmniSharp for OSX'
Downloading package '.NET Core Debugger (macOS / x64)' (51272 KB).................... Done!
Validating download...
Integrity Check succeeded.
Installing package '.NET Core Debugger (macOS / x64)'
Downloading package 'Razor Language Server (macOS / x64)' (50386 KB).................... Done!
Installing package 'Razor Language Server (macOS / x64)'
Finished - VS Code notifications will pop up with
Required assets to build and debug are missing from 'SampleApp'. Add them? - Take the action requested. Click the button
There are unresolved dependencies. Please execute the restore command to continue. - Take the action requested. Click the Restore button.
- You should see something like the following in the .Net output log
Restore completed in 3.74 sec for /Users/xx/Documents/GitHub/AspNetCore.Docs/aspnetcore/tutorials/first-mongo-app/samples/3.x/SampleApp/BooksApi.csproj.
Done: 0.
Run the program with VS Code
Run Via GUI
- Run the application with or without debugging using the GUI
- With Debug
- Debug -> Start Debugging F5
- Without Debug
- Debug -> Start Without Debugging ^F5
Run Via Command Line
You can build and run dotnet core applications from a command prompt. You can either instal the dot net run time explicitly or use the one available in Visual Studio Code. The next steps assume you will use VS Code.
- Open a terminal inside Visual Studio
Terminal -> new Terminal - Build the application - this will be unnecessary because VSCode will have already built it.
dotnet build - Run the application
dotnet run - Terminate the program via the terminal
control-c
Verification
Connect to this URL with your browser. You should see an array with two booksHistory
Created 2019/12/08
Last Edited 2019/12/08
Comments
Post a Comment