<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lenut Ileni</title>
    <description>The latest articles on DEV Community by Lenut Ileni (@lenut_ileni_c02e7a2e3e715).</description>
    <link>https://dev.to/lenut_ileni_c02e7a2e3e715</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3579959%2F2f7919d4-3d99-4e52-b783-aff892da51b6.jpg</url>
      <title>DEV Community: Lenut Ileni</title>
      <link>https://dev.to/lenut_ileni_c02e7a2e3e715</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lenut_ileni_c02e7a2e3e715"/>
    <language>en</language>
    <item>
      <title>Deploy with Azure Container Apps</title>
      <dc:creator>Lenut Ileni</dc:creator>
      <pubDate>Tue, 28 Oct 2025 08:25:18 +0000</pubDate>
      <link>https://dev.to/lenut_ileni_c02e7a2e3e715/deploy-with-azure-container-apps-2271</link>
      <guid>https://dev.to/lenut_ileni_c02e7a2e3e715/deploy-with-azure-container-apps-2271</guid>
      <description>&lt;h2&gt;
  
  
  Deploy Your App with Azure Container Apps (Beginner-Friendly Guide)
&lt;/h2&gt;

&lt;p&gt;So you’ve built a cool app. It runs great on your machine. You’re proud.&lt;br&gt;&lt;br&gt;
But then someone says, “Cool, can you deploy it?” — and you suddenly start sweating.&lt;br&gt;&lt;br&gt;
Fear not! In this post, we’ll deploy your app to &lt;strong&gt;Azure Container Apps&lt;/strong&gt; like pros (but with beginner energy).&lt;/p&gt;


&lt;h2&gt;
  
  
  What Are Azure Container Apps?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Azure Container Apps (ACA)&lt;/strong&gt; is a fully managed serverless container service from Microsoft Azure.&lt;br&gt;&lt;br&gt;
In simple terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You bring your &lt;strong&gt;containerized app&lt;/strong&gt; (Docker image).&lt;/li&gt;
&lt;li&gt;Azure takes care of &lt;strong&gt;scaling&lt;/strong&gt;, &lt;strong&gt;networking&lt;/strong&gt;, and &lt;strong&gt;infrastructure management&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You only pay for what your container uses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No need to set up VMs, load balancers, or wrestle with Kubernetes configurations.&lt;/p&gt;


&lt;h2&gt;
  
  
  Key Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Serverless containers&lt;/strong&gt;: Scale to zero when idle to save costs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple deployment&lt;/strong&gt;: Just &lt;code&gt;az containerapp up&lt;/code&gt; and done.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in scaling rules&lt;/strong&gt;: Based on CPU, memory, or custom metrics.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed infrastructure&lt;/strong&gt;: Azure handles the heavy lifting.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language agnostic&lt;/strong&gt;: If it runs in a container, it runs here.
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;Here’s the flow we’ll follow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Your App Code]
      ↓
   (Docker)
  Build Image
      ↓
 Push to Azure Container Registry (ACR)
      ↓
 Deploy to Azure Container Apps (ACA)
      ↓
 Access Your App in Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In short:&lt;br&gt;
&lt;strong&gt;Build → Push → Deploy → Access&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before we start, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Azure Account&lt;/strong&gt; → &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;portal.azure.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; installed and running
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure CLI&lt;/strong&gt; installed → &lt;a href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli" rel="noopener noreferrer"&gt;Install guide&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Step 1: Create a Container Registry (ACR)
&lt;/h2&gt;

&lt;p&gt;We need a place to store our Docker image. That’s Azure Container Registry.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;portal.azure.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Log in
&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;“Container registries”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fill out the form:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subscription&lt;/strong&gt;: your Azure subscription
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Group&lt;/strong&gt;: create one (e.g., &lt;code&gt;mygroup&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registry Name&lt;/strong&gt;: unique name (e.g., &lt;code&gt;myregistry&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location&lt;/strong&gt;: choose something near you
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SKU&lt;/strong&gt;: &lt;code&gt;Basic&lt;/code&gt; is fine for now
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review + Create&lt;/strong&gt;, then &lt;strong&gt;Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You now have your own private Docker registry.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 2: Build Your Docker Image
&lt;/h2&gt;

&lt;p&gt;Make sure your project has a &lt;code&gt;Dockerfile&lt;/code&gt; in the root directory (there is an example of Dockerfile at the end of the post).&lt;br&gt;&lt;br&gt;
Then run this from your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; myapp:v1 &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Explanation:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docker build&lt;/code&gt; → builds a Docker image
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-t myapp:v1&lt;/code&gt; → tags your image with a name (&lt;code&gt;myapp&lt;/code&gt;) and version (&lt;code&gt;v1&lt;/code&gt;)
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.&lt;/code&gt; → means the current directory (where your Dockerfile lives)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it finishes without errors, you have a working image.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Tag and Push Your Image to ACR
&lt;/h2&gt;

&lt;p&gt;We’ll log in to Azure and push our image to the registry we just made.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Log in to Azure:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This opens a browser to sign in with your Azure account.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Log in to your registry:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az acr login &lt;span class="nt"&gt;--name&lt;/span&gt; myregistry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This connects Docker with your Azure registry.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tag your image for ACR:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker tag myapp:v1 myregistry.azurecr.io/myapp:v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tags your image so it points to your registry address.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Push the image:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker push myregistry.azurecr.io/myapp:v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This uploads your image to your Azure Container Registry.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Deploy to Azure Container Apps
&lt;/h2&gt;

&lt;p&gt;Now the fun part — getting your app online.&lt;/p&gt;

&lt;p&gt;Run this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az containerapp up   &lt;span class="nt"&gt;--name&lt;/span&gt; myapp   &lt;span class="nt"&gt;--resource-group&lt;/span&gt; mygroup   &lt;span class="nt"&gt;--image&lt;/span&gt; myregistry.azurecr.io/myapp:v1   &lt;span class="nt"&gt;--target-port&lt;/span&gt; 80   &lt;span class="nt"&gt;--ingress&lt;/span&gt; external
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Explanation:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;az containerapp up&lt;/code&gt; → creates and deploys a container app
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--name myapp&lt;/code&gt; → name of your app
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--resource-group mygroup&lt;/code&gt; → the resource group used earlier
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--image ...&lt;/code&gt; → your container image from ACR
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--target-port 80&lt;/code&gt; → the internal port your app listens on
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--ingress external&lt;/code&gt; → makes it accessible publicly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Azure will take a moment to deploy everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: Access Your App
&lt;/h2&gt;

&lt;p&gt;When it’s done, you’ll see an output like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your app is deployed! URL: https://myapp.region.azurecontainerapps.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy that URL, open it in your browser, and your app is live.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;You just:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Built a Docker image
&lt;/li&gt;
&lt;li&gt;Pushed it to Azure
&lt;/li&gt;
&lt;li&gt;Deployed it to a live container app
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All without managing servers or Kubernetes configurations.&lt;/p&gt;

&lt;p&gt;Next steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add CI/CD with GitHub Actions
&lt;/li&gt;
&lt;li&gt;Try scaling rules
&lt;/li&gt;
&lt;li&gt;Or simply enjoy your deployed application
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Deploying with &lt;strong&gt;Azure Container Apps&lt;/strong&gt; is one of the easiest ways to get your container running in the cloud — no servers, no clusters, no pain.  &lt;/p&gt;

&lt;p&gt;Now you can deploy your app confidently, and maybe even help someone else do the same.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: Dockerfile
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="c"&gt;# Use an official Node.js runtime as the base image&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; node:18-alpine&lt;/span&gt;

&lt;span class="c"&gt;# Set the working directory inside the container&lt;/span&gt;
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /app&lt;/span&gt;

&lt;span class="c"&gt;# Copy package files and install dependencies&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; package*.json ./&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--production&lt;/span&gt;

&lt;span class="c"&gt;# Copy the rest of the application code&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;

&lt;span class="c"&gt;# Expose the port your app runs on&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 80&lt;/span&gt;

&lt;span class="c"&gt;# Define the command to start your app&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["npm", "start"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Explanation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;FROM node:18-alpine&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Starts with a lightweight Node.js base image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WORKDIR /app&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Creates and switches to the &lt;code&gt;/app&lt;/code&gt; directory inside the container.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;COPY package*.json ./&lt;/strong&gt; and &lt;strong&gt;RUN npm install&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Copies your package files and installs dependencies before copying the rest — this helps Docker cache layers for faster rebuilds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;COPY . .&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Copies your application source code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EXPOSE 80&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Tells Docker (and Azure) that your app listens on port 80.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CMD ["npm", "start"]&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Defines the command that runs when the container starts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>azure</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
