Dockerize .NET 6 in 10 Minutes
HTML-код
- Опубликовано: 25 июн 2024
- In this video, we're going to Dockerize our .NET 6 Web API built with TDD. We'll see how to build a multi-stage Dockerfile step-by-step. By containerizing our web API, it'll be much more convenient to manage the deployment our application to a variety of environments on-prem and in the cloud. We'll also set up a health check endpoint!
• 🤝 Become a Patron of the Channel!
Patreon supporters get access to source code from all episodes!
/ productivedev
• 👋 Get in Touch!
► Facebook bit.ly/productive-dev-fb
► LinkedIn bit.ly/wesd-linkedin
► Twitter bit.ly/wesd-twitter
• 🧑🏽💻 Udemy Courses
► Udemy bit.ly/wesd-udemy
• 🕘 Timestamps
0:00 - Intro
1:23 - Recap of the API
3:07 - Creating a Dockerfile
7:01 - Building the Docker image
8:25 - Running a Docker Container
10:01 - Testing Locally in Browser
10:25 - Adding a Health Check
12:00 - Rebuilding
12:49 - Testing Health Check in Browser
• 📚 Topics Covered in This Video
► Docker
► DevOps
► Dockerfile
► Dockerizing .NET
► .NET Health Check
► Docker multi-stage build
► Docker tagging► .NET 6► Web API Development Наука
It is understated how nice it is that you are brief and well spoken. This stuff always ends up being an hour long video for 10 minutes worth of info.
Great Work !!! This is the clean and clear video of containerizing an api I have ever seen. Thanks for the short and superb video.
Just found your channel and I wish I had found it sooner! How you only have 40k is beyond me, excellent content that I can't wait get stuck into
Thank you very much, i'm just days into docker and i'm very invested.
Love to see people that take the effort to explain
Thank you! and of course so glad to see you again!
Thanks Azim!
Just stumbles upon your channel, and very impressed of the quality of the videos and your teaching skills! Keep up the good work!
Thanks Axel!
Great session, simple and easy to understand , Thank you !!
A really good explanation. Short and simple.
excellent this is the simplest example i see , thank you
Thank you Wes Doyle for your help..... I was facing an issue and after watching this video....and follow the steps you mentioned, it worked for me, seamlessly. Thanks once again
Perfect video, explained in a simple way
Good to see you back !
Thanks for watching David! Glad to be back!
Thank you soo much! Very well explained!
Thank a lot, you are the star!
Keep Going , thanks for the simple explanation
Great Job! Contratulations!
Great video, thank you!
Thanks ,well explained
Thanks, great video!
Thank you Sir!
Excelent tutorial! Thnxz!
I love Docker.
Nice video, thank you
Thanks, i struggled with those overriding of ENV variables and wondered why it kept using port 80
very helpfull please keep going we need more and more of your content, especialy more technicaly and more in depth, thank you
Thanks Michel!
Thanks!
Great walk through man! Do you mind telling me what JSON Formatter that is in your browser?
Great video, thank you!
I've a question regarding the dockerfile,
will it work if we change it like that:
instead of line 4 (copy . .) we'll write (copy pathToCsproj destPathToCsproj), then dotnet restore command, then copy . . and finally dotnet publish?
the purpose of this change is to cached the process of restoring nuget packages. again, thank you
nice video
I followed your instructions and it worked. Thanks!
However, I need to be able to ssh into the app service for various reasons. Following your instructions doesn't install the necessary dependencies so that ssh will work (using Kudos from the Azure Portal). It would be great to do a follow-on video that explains this.
Hi Wes, I have a question.
This works perfectly for me with Docker Desktop if I use a Linux based ASP .NET image. However, when I try to create the image using one of the official (Microsoft) Windows based underlying OS, like nanoserver, it tells me that the Operating System is not compatible. Do you know of a way to build the image using one of those as base?
gracias por el tip de correr docker con la variable ASPNETCORE_URLS configurada, no entendía porque siempre se iba a la puerta 80!. Muy agradecido
¡gracias por ver!
This might be a dummy question but for example when using Laravel if we use volumes, the container source code will always be updated so we don’t need to always be resetting the container. Can it be done with .Net too?
Every time I make a change do I have to compile and upload the project?
is it vsvim that you are using?
Great tutorial, Wes! Really helpful. Just one small question, could you please share the VS theme and font name that you are using? Thank you!
Hi Santiago. I'm using a custom VS theme. I believe you can find a recent version on my GitHub in the dotfiles repo.
@@WesDoyle Do you have the same theme which you have used in this video ? I have verified your github, but it is not matching with the one and also it's been very old. It will be good if you share the theme in the video as it is very awesome
Thanks that was nice. While watching I had a thought, and you don't cover why we would want a 2 stage build process, perhaps because it's obvious, but also perhaps it is worthy of mention. Why wouldn't we publish directly to a runtime container? Because it would have all the artifacts from your machine allowing it to be built. You could have certain drivers, or registered dlls or environment variables that aren't present in test, or prod. The very reason for containerizing (or a close second) is that by sanitizing the build environment it ensures all team members code that gets merged together still builds in a standalone vanilla environment. In a nutshell its good practice for exposing untracked dependencies. Cheers!
when I try to dockerize I get an error from visual studio: project targets windows and I need it on a linux container
the image is applicable for .net 4.6.1?
what extension you're using on browser ?
Thank you. I have a question for you. I have, for example, 10 projects on 10 specific different services in my solution. It turns out that I can't create a Dockerfile at the solution level and I have to add the Dockerfile to each project separately. Right? But there is a problem. There is one more project in the solution, the eleventh. This is a library of classes with certain models. When I try to build a container, I get the following error about skipping building a common project with classes because it's not defined in the context of Dockerfile. How can I get out of this situation? Thanks
good question, can be tricky at first. you can get it to work, though. just need to be aware of your Dockerfile definitions and build command context. Will try to make a video
I have this exact scenario - did you ever figure out the best way to handle it?
"For each executable project, such as a WebAPI or Console Application, it is imperative to possess a Dockerfile. As for the remaining projects, such as Class Libraries, that are employed within these projects, they are automatically integrated into your container via the 'dotnet restore' command."
Great tutorial. What about HTTPS? You configured it in your docker run command, but it's not workking even after exposing 5001. Do you know how to get around on this?
expose multiple ports using EXPOSE 5000-5001
Vocẽ pode usar no Dockerfile esse comando: ENV ASPNETCORE_ENVIRONMENT=Development
How to deploy Docker container to the remote (ubuntu virtual machine) docker host?
On a multi-core cpu it won't be necessary to use switch --disable-parallel
Which app is that terminal emulator ?
And how do i do all of this with out docker desktop please help me :)
r u planning to make videos on NodeJs?)
nice idea, what would you like to see?
@@WesDoyle let’s say real BFF(backend for frontend )
Please share a github link or similar to the dockerfile
4:08 you just paste link out of nowhere, where can it be found? Why are you not using dockerhub?
Is console apps the same to Dockerize?
Generally, yes
@@WesDoyle Thanks for answering :)
Since the #1 DB-connectivity MS recommends is Entity Framework (EF), and since the #1 approach for "EF DB migration" is sqlcmd "script based"...then I would expect there is at least one example in the galaxy of a docker file that installs `sqlcmd`...so that the EF DB migration can be executed (preferably from a Web API "migrate" endpoint). However, no such example exists...and there is no ability with any "Azure App Service" compatible docker images to install `sqlcmd`. If you tackled that mess, you would be a God.
Video starts at 3:10
2:13 I've scared....
Not able to understand docker commands
Fuck Microshit. I've been struggling with all sorts of errors trying to make the port mapping work. The node, go, postgres images work as expected but this shit gotta be a struggle because of Microshit.