{"id":7024,"date":"2024-12-05T06:19:37","date_gmt":"2024-12-05T06:19:37","guid":{"rendered":"https:\/\/www.aegissofttech.com\/insights\/?p=7024"},"modified":"2025-05-14T10:42:33","modified_gmt":"2025-05-14T10:42:33","slug":"dockerfile-to-deploy-net-9-azure-functions","status":"publish","type":"post","link":"https:\/\/www.aegissofttech.com\/insights\/dockerfile-to-deploy-net-9-azure-functions\/","title":{"rendered":"Creating a Dockerfile to Deploy .NET 9 Azure Functions with VS Code and CLI"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Overview<\/h2>\n\n\n\n<p><strong>Agenda<\/strong>: In this article, we will learn how to create a .net 9 Azure function app and deploy it to the docker using Dockerfile. Whether you\u2019re looking to <strong><a href=\"https:\/\/www.aegissofttech.com\/hire-asp.net-developers.html\">hire ASP.NET developers<\/a><\/strong> for your next project or need expert ASP.NET Development services, this guide will walk you through the process of deploying an Azure function app using Docker and Visual Studio Code.<\/p>\n\n\n\n<p>Download .NET SDK for Windows or Mac based on your operating system from <a href=\"https:\/\/dotnet.microsoft.com\/en-us\/download\/visual-studio-sdks\" target=\"_blank\" rel=\"noopener\">https:\/\/dotnet.microsoft.com\/en-us\/download\/visual-studio-sdks<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"975\" height=\"375\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-44.png\" alt=\"\" class=\"wp-image-7026\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-44.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-44-300x115.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-44-768x295.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Download Visual Studio code from Microsoft\u2019s official website <a href=\"https:\/\/code.visualstudio.com\/Download\" target=\"_blank\" rel=\"noopener\">https:\/\/code.visualstudio.com\/Download<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"975\" height=\"456\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-45.png\" alt=\"\" class=\"wp-image-7027\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-45.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-45-300x140.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-45-768x359.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Install the Azure function command line tools using PowerShell or a terminal<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"975\" height=\"664\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-46.png\" alt=\"\" class=\"wp-image-7028\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-46.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-46-300x204.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-46-768x523.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>If you are on the Windows platform use the command<\/p>\n\n\n\n<p>winget install Microsoft.Azure.FunctionsCoreTools<\/p>\n\n\n\n<p>If you are on Mac, use the commands<\/p>\n\n\n\n<p>brew tap azure\/functions<\/p>\n\n\n\n<p>brew install azure-functions-core-tools@4<\/p>\n\n\n\n<p>For more information, you can refer to <a href=\"https:\/\/github.com\/Azure\/azure-functions-core-tools?tab=readme-ov-file#azure-functions-core-tools\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/Azure\/azure-functions-core-tools?tab=readme-ov-file#azure-functions-core-tools<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Download Docker desktop from docker hub official website <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.docker.com\/products\/docker-desktop\/<\/a><\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"560\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-47.png\" alt=\"\" class=\"wp-image-7029\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-47.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-47-300x172.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-47-768x441.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Verify the installation using below ways<\/p>\n\n\n\n<p>Once you install .NET SDK, type the below command and you should see the result like below. If the result is something different, then there might be some issue with .net installation.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"302\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-48.png\" alt=\"\" class=\"wp-image-7030\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-48.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-48-300x93.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-48-768x238.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Once you install VS Code, just type \u201ccode .\u201d In the terminal, it should open Visual Studio Code GUI.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"302\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-49.png\" alt=\"\" class=\"wp-image-7031\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-49.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-49-300x93.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-49-768x238.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Once you install Azure function core tools, type the following command to verify. If the result is something different, then there might be some issues with the installation.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"298\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-50.png\" alt=\"\" class=\"wp-image-7032\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-50.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-50-300x92.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-50-768x235.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Once you install docker desktop, use the below command to verify.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"293\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-51.png\" alt=\"\" class=\"wp-image-7033\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-51.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-51-300x90.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-51-768x231.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>First we will create the Azure function using pre-defined templates that comes out of the box with Azure function core tools.<\/p>\n\n\n\n<p>Create a directory where you want to create the project and open the directory in the command line tool like PowerShell or Terminal.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"556\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-52.png\" alt=\"\" class=\"wp-image-7034\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-52.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-52-300x171.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-52-768x438.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>For this demo, I have created a folder on my desktop and opened the folder in terminal.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"187\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-53.png\" alt=\"\" class=\"wp-image-7035\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-53.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-53-300x58.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-53-768x147.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>To create a function app, use the below command.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"207\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-54.png\" alt=\"\" class=\"wp-image-7036\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-54.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-54-300x64.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-54-768x163.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Once the function is created, we need to create an endpoint with HTTPTrigger which returns something like below.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"229\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-55.png\" alt=\"\" class=\"wp-image-7037\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-55.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-55-300x70.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-55-768x180.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Now we are done with function app creation and now we will test it by running this on localhost.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"324\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-56.png\" alt=\"\" class=\"wp-image-7038\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-56.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-56-300x100.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-56-768x255.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Hit the highlighted URL, and you will see the following result.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"135\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-57.png\" alt=\"\" class=\"wp-image-7039\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-57.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-57-300x42.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-57-768x106.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Let\u2019s open this in VS Code. Hit the following command.<\/p>\n\n\n\n<p><strong>Code:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"512\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-58.png\" alt=\"\" class=\"wp-image-7040\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-58.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-58-300x158.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-58-768x403.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>If you check Line 21, we are returning exactly same response which we saw when we hit localhost URL when we ran the app. This ensures that the azure function with HttpTrigger is working as expected from localhost server.<\/p>\n\n\n\n<p>Now we need to create a Dockerfile which helps us in bundling the package contents into an image which we will later deploy to docker.<\/p>\n\n\n\n<p>Since we used the Azure function command line tools, we used \u2014docker option in the command at the time of function app creation. It gave us a docker file with predefined configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Open Dockerfile and you will see code like below.<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"439\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-59.png\" alt=\"\" class=\"wp-image-7041\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-59.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-59-300x135.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-59-768x346.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>If you don\u2019t see this file by default, you can manually create it and write the same code in it. Just make sure that you are creating this file in the root directory of the project.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Line 1 specifies the base image to use for the build process. Here, it is using the .NET SDK 9.0 image from Microsoft\u2019s container registry.<\/li>\n\n\n\n<li>AS installer-env creates a named build stage called installer-env, which allows you to reference this stage later in the Dockerfile.<\/li>\n\n\n\n<li>Line 3 copies the contents of the current directory (where the Dockerfile is located) to the \/src\/dotnet-function-app directory inside the Docker image.<\/li>\n\n\n\n<li>RUN cd \/src\/dotnet-function-app changes the working directory to \/src\/dotnet-function-app.<\/li>\n\n\n\n<li>mkdir -p \/home\/site\/wwwroot creates the directory \/home\/site\/wwwroot if it does not already exist.<\/li>\n\n\n\n<li>dotnet publish *.csproj &#8211;output \/home\/site\/wwwroot runs the dotnet publish command on the project file (*.csproj), outputting the published application to \/home\/site\/wwwroot.<\/li>\n\n\n\n<li>Line 8 specifies the runtime base image, which is the Azure Functions image for .NET isolated worker with .NET 9.0. This image will be used to run the application.<\/li>\n\n\n\n<li>Line 9-10 specified the Environment configuration variables which are basic need of an Azure function to execute.<\/li>\n\n\n\n<li>Line 12 copies the published application from \/home\/site\/wwwroot in the build stage to \/home\/site\/wwwroot in the final runtime image.<\/li>\n<\/ul>\n\n\n\n<p>Now, in the same command line tool, which we used previously, hit the below command to build an image with this dockerfile<\/p>\n\n\n\n<p>docker build -t mydemofuncapp:latest .<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"247\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-60.png\" alt=\"\" class=\"wp-image-7042\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-60.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-60-300x76.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-60-768x195.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Once the image is built, we need to create a container of it, which will put the app in an executable state or running state. Run the following command.<\/p>\n\n\n\n<p>docker run &#8211;rm -it -p 8080:80\/tcp mydemofuncapp:latest<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"391\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-61.png\" alt=\"\" class=\"wp-image-7043\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-61.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-61-300x120.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-61-768x308.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>docker run:<\/strong> This is the base command to run a container.\n<ol start=\"1\" class=\"wp-block-list\">\n<li>&#8211;rm: This option ensures that the container is automatically removed after it stops. This helps in keeping your Docker environment clean by not leaving stopped containers behind.<\/li>\n\n\n\n<li>-it: This combines two options:<\/li>\n\n\n\n<li>-i stands for interactive, which keeps the STDIN open even if not attached.<\/li>\n\n\n\n<li>-t allocates a pseudo-TTY, which allows you to interact with the container through the terminal.<\/li>\n\n\n\n<li>-p 8080:80\/tcp: This option maps a port on your host machine to a port in the container:\n<ol start=\"1\" class=\"wp-block-list\">\n<li>8080 is the port on the host machine.<\/li>\n\n\n\n<li>80 is the port inside the container.<\/li>\n\n\n\n<li>tcp specifies the protocol. Here, it explicitly states that the TCP protocol is being used.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li><strong>mydemofuncapp<\/strong>:latest: This specifies the image to use for the container.\n<ol start=\"1\" class=\"wp-block-list\">\n<li>mydemofuncapp is the name of the image.<\/li>\n\n\n\n<li>latest is the tag of the image, usually indicating the latest version of the image.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n\n\n\n<p>Now hit http:\/\/localhost:8080\/api\/httpdemo and you will see the exact same result that we saw on running the app on localhost server.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"107\" src=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-62.png\" alt=\"\" class=\"wp-image-7044\" title=\"\" srcset=\"https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-62.png 975w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-62-300x33.png 300w, https:\/\/www.aegissofttech.com\/insights\/wp-content\/uploads\/2024\/12\/image-62-768x84.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>Hence, we deployed the Azure function to Docker using Dockerfile.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion:<\/h2>\n\n\n\n<p>With the steps outlined above, we successfully created and deployed an Azure Function app to Docker. For businesses looking to streamline their development process, <strong><a href=\"https:\/\/www.aegissofttech.com\/microsoft\/dotnet-development\">ASP.NET Development services<\/a><\/strong> can be crucial in building scalable and efficient applications.<\/p>\n","protected":false},"excerpt":{"rendered":" ","protected":false},"author":1,"featured_media":7482,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[190,22],"tags":[1027,1025],"class_list":["post-7024","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net","category-azure","tag-code-and-cli","tag-dockerfile"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/posts\/7024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/comments?post=7024"}],"version-history":[{"count":4,"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/posts\/7024\/revisions"}],"predecessor-version":[{"id":9984,"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/posts\/7024\/revisions\/9984"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/media\/7482"}],"wp:attachment":[{"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/media?parent=7024"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/categories?post=7024"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aegissofttech.com\/insights\/wp-json\/wp\/v2\/tags?post=7024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}