Deploy asp.net core 2.0 apps on Heroku
Hello,
In this tutorial, we’ll be taking a look at how to deploy web apps built with asp.net core 2.0 to heroku.com, a cloud-hosting platform.
#1. We’ll need a few things:
- Docker (Windows, Mac)
- Heroku CLI (NPM, Binaries) Windows Setup for 32/64bit
- ASP.NET Core 2.0 Runtime (Here)
#2. We’ll need a web app running on asp.net core 2.0.
For this tutorial, I have created a simple web api application on GitHub called sample-web-api which is now hosted on heroku.
All it does is returns an array of strings at the ~/api/values endpoint.
If you need help with creating an asp.net core 2.0 app, the official documentation by Microsoft is good way to start.
#3. Publish your App
dotnet publish -c Release
#4. Add a Dockerfile to the root of your project
In the root of your project, add a file called Dockerfile (no extensions) and place the following in it:
FROM microsoft/aspnetcore
WORKDIR /app
COPY . .
CMD ASPNETCORE_URLS=http://*:$PORT dotnet <AssemblyName>.dll
Be sure to replace <AssemblyName> with the name of your project assembly e.g. SampleWebApi
#5. Copy the Dockerfile to your publish directory
Your publish directory should be:
./bin/release/netcoreapp2.0/publish
#6. Build the Docker Image
docker build -t <image-name> ./bin/release/netcoreapp2.0/publish
Be sure to replace <image-name> with the name you intend to give the image e.g. sample-web-api
#7. Create the app on Heroku using the dashboard
- Make sure you have a heroku.com account
- Login to the dashboard and create the app
- I called mine sample-web-api, so you can’t use that again
#8. Be sure you are logged in to heroku and its container registry
heroku login heroku container:login
#9. Tag the heroku target image
docker tag <image-name> registry.heroku.com/<heroku-app-name>/web
#10. Push the docker image to heroku
docker push registry.heroku.com/<heroku-app-name>/web
Be sure to replace <heroku-app-name> with the name of your heroku app e.g. sample-web-api
eyJhbGciOiJSUzI1NiIsImtpZCI6IjAwOTZhZDZmZjdjMTIwMzc5MzFiMGM0Yzk4YWE4M2U2ZmFkOTNlMGEifQ.eyJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vYXBwYXJ0bWVudGFwcC03NTdlNCIsImF1ZCI6ImFwcGFydG1lbnRhcHAtNzU3ZTQiLCJhdXRoX3RpbWUiOjE1MzA1OTYxMzgsInVzZXJfaWQiOiJzNUJkbWUyT2VaYUl4eE5NNUIxRDhHZElOYmgxIiwic3ViIjoiczVCZG1lMk9lWmFJeHhOTTVCMUQ4R2RJTmJoMSIsImlhdCI6MTUzMDU5NjEzOCwiZXhwIjoxNTMwNTk5NzM4LCJlbWFpbCI6Im15dXNlckBzZXJ2aWNlLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJlbWFpbCI6WyJteXVzZXJAc2VydmljZS5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJwYXNzd29yZCJ9fQ.Av7EJHbGz2_pNxlqybvInRqrqagcVF2VcOTTl0E6s0pvAGfA8FkHLbIzzsR5t2UdBPC1oFHvKgbxePTcIMNesp_aSOxLluyu5I-EnSNi-loUeh-ZjoCC-qblTq1EQATESdqkn1AXlrrnOfAwHLqRVJmloUqgJJ7zMl7r6e7hIt3BVeSFxFVlsca1TUgOwNCkoao5HJmIQIwCXts9HQpiGowzzun_McumAzj_gxtc9PYqXx8t8Cfwx1l5GNogu0bTji7BYHBrs6Y_IjMfayHKAQ-6rVrEH2dTWpydJ9p3eGCwy2-AhV7mNoZvuTOcL7ps2YONDPDm_iWAX5tThM6DpQ
Updated: heroku link for publishing
heroku container:release web --app <webappName/imagename>
#Bonus. Check that your app works
docker build -t appwebapi2 D:\BitbucketRepo\AppartmentApp\AppartmentApp.WebApi\AppartmentApp.WebApi\bin\Release\PublishOutput
heroku login
heroku container:login
docker tag appwebapi2 registry.heroku.com/appwebapi2/web
docker push registry.heroku.com/appwebapi2/web
heroku container:release web --app appwebapi2
heroku logs
heroku logs
- Load https://<heroku-app-name>.herokuapp.com in your browser.
- If all went well, you should see your app up and running.
- If if did, Yaaaay!!!
- If not, feel free to give feedback in the comments below.
Clap