<?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: Emmanuel Oghre</title>
    <description>The latest articles on DEV Community by Emmanuel Oghre (@techprodigy).</description>
    <link>https://dev.to/techprodigy</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%2F1652282%2F61d42169-41f7-4eea-bb7b-0c3abcf2f28c.jpg</url>
      <title>DEV Community: Emmanuel Oghre</title>
      <link>https://dev.to/techprodigy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techprodigy"/>
    <language>en</language>
    <item>
      <title>Deploying an NGINX Web Server on AWS EC2- Stage Zero (0) Project</title>
      <dc:creator>Emmanuel Oghre</dc:creator>
      <pubDate>Wed, 29 Jan 2025 15:15:22 +0000</pubDate>
      <link>https://dev.to/techprodigy/ngix-installtion-configuring-a-webserver-349c</link>
      <guid>https://dev.to/techprodigy/ngix-installtion-configuring-a-webserver-349c</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
This marks the start of my DevOps journey at HNG Cohort 12.&lt;/p&gt;

&lt;p&gt;I was tasked with setting up and configuring NGINX on a fresh Ubuntu server. This task will demonstrate my ability to work with basic web server configurations and deliver a functional web server.&lt;br&gt;
🔧&lt;strong&gt;Task Requirements&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NGINX Installation and Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the NGINX web server and ensure it is running.&lt;/li&gt;
&lt;li&gt;Configure NGINX to serve a custom HTML page as the default page (/var/www/html/index.html)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prerequisite for this Project&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setup a Cloud Platform Account&lt;/li&gt;
&lt;li&gt;Download and install a SSH Client &lt;/li&gt;
&lt;li&gt;Foundational knowledge of edit files in Linux Command Line Interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Launch AWS account and create an Ubuntu server&lt;/strong&gt;&lt;br&gt;
Login into the AWS console and click on EC2 (Elastic Compute Cloud)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wu4rq04t6skhyh19lgg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wu4rq04t6skhyh19lgg.png" alt="Image description" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on launch instance to start a fresh spin-up a new AWS instance&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faap0qir3ftig3vyc95jo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faap0qir3ftig3vyc95jo.png" alt="Image description" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Type in a name for the server and choose any Ubuntu server image provider and type, in this case I am choosing Ubuntu 24.04 LTS(HVM), SSD Volume Type&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7sfda7pbb4rmogxcmoid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7sfda7pbb4rmogxcmoid.png" alt="Image description" width="800" height="361"&gt;&lt;/a&gt;&lt;br&gt;
Finalize other prerequisite such as assigning a key-pair and network configuration. I have chose to create a new security group and allow inbound connection on port &lt;strong&gt;80 and 22&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Port 80: allows me to view webpages using the browser connected to the internet, servers responds to client's request via the &lt;br&gt;
&lt;strong&gt;80&lt;/strong&gt; protocol** which is an application layer protocol primarily used via a web browser.&lt;br&gt;
Port 22: allows me to connect to my server instance to make configurations. It is a secured way to connect to a server via the internet.&lt;/p&gt;

&lt;p&gt;Read more about SSH &lt;a href="https://en.wikipedia.org/wiki/Secure_Shell#:~:text=13%20External%20links-,Definition,attacker%20as%20a%20valid%20user." rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0cb0b1z6rs0n0ophqi2o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0cb0b1z6rs0n0ophqi2o.png" alt="Image description" width="800" height="364"&gt;&lt;/a&gt;&lt;br&gt;
Click on launch instance, you should have your instance up in the EC2 instance window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38pxeldluqi622y2b5e7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38pxeldluqi622y2b5e7.png" alt="Image description" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Connect to your instance via SSH.&lt;/strong&gt;&lt;br&gt;
We have many SSH client software choose any and connect to your instance. In this case am using &lt;em&gt;&lt;strong&gt;Putty&lt;/strong&gt;&lt;/em&gt;.&lt;br&gt;
Launch putty and insert the server public DNS (Domain Name Server) or Public IP Address.&lt;br&gt;
Click to read more about &lt;a href="https://en.wikipedia.org/wiki/Domain_Name_System" rel="noopener noreferrer"&gt;DNS&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/IP_address" rel="noopener noreferrer"&gt;IP&lt;/a&gt; address.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkb3911cyaihcobi3fky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkb3911cyaihcobi3fky.png" alt="Image description" width="659" height="678"&gt;&lt;/a&gt;&lt;br&gt;
After successfully connecting to the server.&lt;br&gt;
Update and Upgrade ubuntu repositories using these commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install NGINX with these commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nginx &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start NGINX&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To enbale NGINX at startup&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6iailuhq0sil3aseky7n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6iailuhq0sil3aseky7n.png" alt="Image description" width="800" height="197"&gt;&lt;/a&gt;&lt;br&gt;
Verify if NGINX is installed by copying and pasting the server public ip address like this "&lt;a href="http://ipaddress" rel="noopener noreferrer"&gt;http://ipaddress&lt;/a&gt;" to see the welcome page.&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; Replace the ip address with the public ip address of the server earlier created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4fo3um3spr8n1e7j3dv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4fo3um3spr8n1e7j3dv.png" alt="Image description" width="800" height="244"&gt;&lt;/a&gt;&lt;br&gt;
Create a custom HTML page and add these contents in it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;vim /var/www/html/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;My DevOps Project&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Arial&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f0f0f0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Welcome to DevOps Stage 0 - Emmanuel Christopher Oghre&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart NGINX&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Finally test&lt;/strong&gt;&lt;br&gt;
Use the ip address of the server to test your web page. It should display your custom HTML page like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n6yd1akmfrunb2uxoi9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n6yd1akmfrunb2uxoi9.png" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I experienced network glitches due to ISP network fluctuations.&lt;/li&gt;
&lt;li&gt;Putty often timed-out due to inactivity for 5 minutes, I had to re-adjust it to 60 minutes.&lt;/li&gt;
&lt;li&gt;I had to do a quick recap on HTML, CSS and Markdown basics as its been a while I wrote any line of code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;br&gt;
✳️Logging in and spinning up a web server on Amazon Web Service.&lt;br&gt;
✳️Configuring EC2 security groups inbound and outbound port.&lt;br&gt;
✳️Connecting to an instance using SSH.&lt;br&gt;
✳️Installing Nginx and configuring for webpages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Nginx is invaluable tool in the &lt;strong&gt;DevOps workspace&lt;/strong&gt; used for many purposes. It actualize the inner operation of how webpages are being host and configure to facilitate uninterrupted serving of client's requests. This DevOps journey perfect is packed with the hands-on approach learning need to achieve my dream of becoming a &lt;strong&gt;&lt;a href="https://hng.tech/hire/devops-engineers" rel="noopener noreferrer"&gt;DevOps Engineer&lt;/a&gt;&lt;/strong&gt; in 2025.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/devops-engineers" rel="noopener noreferrer"&gt;DevOps Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/cloud-engineers" rel="noopener noreferrer"&gt;Cloud Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/site-reliability-engineers" rel="noopener noreferrer"&gt;Site Reliability Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/platform-engineers" rel="noopener noreferrer"&gt;Platform Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/infrastructure-engineers" rel="noopener noreferrer"&gt;Infrastructure Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/kubernetes-specialists" rel="noopener noreferrer"&gt;Kubernetes Specialists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/aws-solutions-architects" rel="noopener noreferrer"&gt;AWS Solutions Architects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/azure-devops-engineers" rel="noopener noreferrer"&gt;Azure DevOps Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/google-cloud-engineers" rel="noopener noreferrer"&gt;Google Cloud Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/ci-cd-pipeline-engineers" rel="noopener noreferrer"&gt;CI/CD Pipeline Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/monitoring-observability-engineers" rel="noopener noreferrer"&gt;Monitoring/Observability Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/automation-engineers" rel="noopener noreferrer"&gt;Automation Engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/docker-specialists" rel="noopener noreferrer"&gt;Docker Specialists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/linux-developers" rel="noopener noreferrer"&gt;Linux Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hng.tech/hire/postgresql-developers" rel="noopener noreferrer"&gt;PostgreSQL Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hng</category>
      <category>devops</category>
      <category>aws</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Building Your DB Server and Interacting With Your DB Using an App on AWS</title>
      <dc:creator>Emmanuel Oghre</dc:creator>
      <pubDate>Tue, 02 Jul 2024 10:05:30 +0000</pubDate>
      <link>https://dev.to/techprodigy/building-your-db-server-and-interacting-with-your-db-using-an-app-on-aws-50bl</link>
      <guid>https://dev.to/techprodigy/building-your-db-server-and-interacting-with-your-db-using-an-app-on-aws-50bl</guid>
      <description>&lt;p&gt;Welcome to another AWS lab walkthrough! In this session, we'll guide you through setting up a relational database server on Amazon RDS and interacting with it through a web application. By the end of this lab, you'll have a fully functional setup where your database is not only deployed but also actively serving a web application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
Lab Title: Build Your DB Server and Interact With Your DB Using an App&lt;br&gt;
AWS Version: 4.6.6 (TESS2)&lt;br&gt;
Duration: Approximately 30 minutes&lt;/p&gt;

&lt;p&gt;Scenario&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q4fvvwkihs8ojlh1wgp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q4fvvwkihs8ojlh1wgp.png" alt="Image description" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end of the lab the infrastructure will look like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrqpt362r6cdm90ynyqj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrqpt362r6cdm90ynyqj.png" alt="Image description" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Objectives&lt;/strong&gt;&lt;br&gt;
After completing this lab, you will be able to:&lt;/p&gt;

&lt;p&gt;Launch an Amazon RDS DB instance with high availability.&lt;br&gt;
Configure the DB instance to permit connections from your web server.&lt;br&gt;
Open a web application and interact with your database.&lt;br&gt;
Scenario&lt;br&gt;
Imagine you start with a basic infrastructure setup, and through this lab, you'll evolve it into a more robust architecture capable of hosting a scalable and resilient database solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Guide&lt;/strong&gt;&lt;br&gt;
Task 1: Create a Security Group for the RDS DB Instance&lt;br&gt;
Navigate to VPC: In the AWS Management Console, go to Services &amp;gt; VPC.&lt;br&gt;
Create Security Group: Click on Security Groups in the left pane and then Create security group.&lt;br&gt;
Security group name: DB Security Group&lt;br&gt;
Description: Permit access from Web Security Group&lt;br&gt;
VPC: Lab VPC&lt;br&gt;
Configure Inbound Rules: Add a rule to permit inbound database requests.&lt;br&gt;
Type: MySQL/Aurora (3306)&lt;br&gt;
Source: Type "sg" and select Web Security Group.&lt;br&gt;
Create Security Group: Finish by clicking Create security group.&lt;br&gt;
Task 2: Create a DB Subnet Group&lt;br&gt;
Navigate to RDS: In the AWS Management Console, go to Services &amp;gt; RDS.&lt;br&gt;
Create DB Subnet Group:&lt;br&gt;
Click on Subnet groups in the left pane and then Create DB Subnet Group.&lt;br&gt;
Name: DB-Subnet-Group&lt;br&gt;
Description: DB Subnet Group&lt;br&gt;
VPC: Lab VPC&lt;br&gt;
Add Subnets:&lt;br&gt;
Select subnets from at least two Availability Zones (e.g., us-east-1a and us-east-1b).&lt;br&gt;
Choose subnets associated with CIDR ranges like 10.0.1.0/24 and 10.0.3.0/24.&lt;br&gt;
Create DB Subnet Group: Click Create.&lt;br&gt;
Task 3: Create an Amazon RDS DB Instance&lt;br&gt;
Launch RDS Instance:&lt;br&gt;
In the RDS console, click Databases in the left pane and then Create database.&lt;br&gt;
Select MySQL under Engine Options.&lt;br&gt;
Choose Dev/Test under Templates.&lt;br&gt;
Select Multi-AZ DB instance for Availability and durability.&lt;br&gt;
Configure Settings:&lt;br&gt;
DB instance identifier: lab-db&lt;br&gt;
Master username: main&lt;br&gt;
Master password: lab-password&lt;br&gt;
DB instance class: db.t3.micro&lt;br&gt;
Allocated storage: 20 GB&lt;br&gt;
Virtual Private Cloud (VPC): Lab VPC&lt;br&gt;
Security group: Select DB Security Group.&lt;br&gt;
Additional Configurations:&lt;br&gt;
Initial database name: lab&lt;br&gt;
Uncheck Enable automatic backups and Enable encryption for lab purposes.&lt;br&gt;
Create Database: Click Create database.&lt;br&gt;
Task 4: Interact with Your Database&lt;br&gt;
Access Web Server IP: Retrieve the IP address of your web server from the AWS console.&lt;br&gt;
Open Web Application: Paste the WebServer IP address into a browser tab and press Enter.&lt;br&gt;
Navigate to the RDS link displayed on the page.&lt;br&gt;
Configure Database Connection:&lt;br&gt;
Enter the Endpoint (copied from RDS console earlier).&lt;br&gt;
Database: lab&lt;br&gt;
Username: main&lt;br&gt;
Password: lab-password&lt;br&gt;
Click Submit.&lt;br&gt;
Test Application: The web application should display an Address Book.&lt;br&gt;
Add, edit, and remove contacts to verify database functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note!!! You can configure the password, admin and database name as you see fit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Congratulations! You have successfully completed the lab. You've learned how to deploy a high-availability RDS database instance on AWS, configure security settings, and integrate it with a web application. This setup ensures your database is not only robust but also scalable and fault-tolerant, suitable for various production workloads.&lt;/p&gt;

&lt;p&gt;For more AWS tips and guides, stay tuned to our blog or explore further in the AWS documentation. Happy cloud computing!&lt;/p&gt;

&lt;p&gt;With this guide, you're now equipped to handle AWS RDS deployments and database interactions like a pro. Let me know if you have any questions or need further assistance!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>alx</category>
      <category>awscommuinty</category>
    </item>
    <item>
      <title>Getting Started with Docker and Kubernetes Sandboxes (Day 3)</title>
      <dc:creator>Emmanuel Oghre</dc:creator>
      <pubDate>Mon, 24 Jun 2024 10:21:32 +0000</pubDate>
      <link>https://dev.to/techprodigy/getting-started-with-docker-and-kubernetes-sandboxes-day-3-4pi4</link>
      <guid>https://dev.to/techprodigy/getting-started-with-docker-and-kubernetes-sandboxes-day-3-4pi4</guid>
      <description>&lt;p&gt;This post builds on the concepts covered in Day 2's video and assumes you already have Docker. If you haven't, you can use these resources:&lt;/p&gt;

&lt;p&gt;Docker Sandbox: &lt;a href="https://labs.play-with-docker.com/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;br&gt;
Kubernetes Sandbox: &lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;br&gt;
Download Docker Desktop: &lt;a href="https://docs.docker.com/get-docker/" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docker multi-stage builds have several advantages over traditional single-stage builds. They're pretty cool, actually!&lt;/p&gt;

&lt;p&gt;First off, you can make your images smaller. How? Well, by splitting the build process into stages, you can leave out all the stuff that's not needed in the final image. You know, things like build dependencies and compilers that the application itself doesn't need to run. So, only the essential application artifacts end up in the slimmed-down image. That means smaller images that don't take up much storage space or time to download. Neat, right?&lt;/p&gt;

&lt;p&gt;But wait, there's more! These multi-stage builds also beef up your security. Smaller images mean there's less room for attackers to find vulnerabilities. By getting rid of unnecessary components, you're reducing the potential weak spots that bad guys can exploit. Safety first!&lt;/p&gt;

&lt;p&gt;Another perk is faster builds. Docker can cache intermediate images created during the build process. So, if the build instructions in a particular stage haven't changed, Docker can just reuse the cached image instead of rebuilding it from scratch. This can really speed things up, especially for complex applications. Time is money, my friend!&lt;/p&gt;

&lt;p&gt;And let's not forget about enhanced maintainability. Breaking down the build process into stages makes it easier to read and tweak your Dockerfile. Each stage focuses on a specific task, so you can understand and modify the process without any headaches. It's all about simplicity and keeping things organized.&lt;/p&gt;

&lt;p&gt;So, to sum it all up, Docker multi-stage builds are an awesome technique for creating lean, secure, and efficient Docker images.&lt;/p&gt;

&lt;p&gt;Demo Setup&lt;br&gt;
Clone the sample repository (or use your own web application):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/piyushsachdeva/todoapp-docker.git
cd todoapp-docker/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a Dockerfile and paste the content provided in the video.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:18-alpine AS installer
WORKDIR /app
COPY package*.json ./
RUN npm install 
COPY . .
RUN npm run build
FROM nginx:latest AS deployer
COPY --from=installer /app/build /usr/share/nginx/html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Build the Docker image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t todoapp-docker .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify the image is built:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker images

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pushing the Image to a Public Repository&lt;/p&gt;

&lt;p&gt;Create a public repository on &lt;a href="https://hub.docker.com/" rel="noopener noreferrer"&gt;https://hub.docker.com/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Login to Docker Hub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker login

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tag your image with your username and repository details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker tag todoapp-docker:latest username/new-reponame:tagname

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Push the image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker push username/new-reponame:tagname

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running the Container Locally&lt;/p&gt;

&lt;p&gt;Pull the image from your repository (if running on another machine):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker pull username/new-reponame:tagname

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the container and map port 3000:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -dp 3000:3000 username/new-reponame:tagname

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Access your app at &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; (if successful).&lt;/p&gt;

&lt;p&gt;Additional Commands&lt;/p&gt;

&lt;p&gt;Entering Container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it containername sh

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(or use container ID)&lt;/p&gt;

&lt;p&gt;Viewing Logs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker logs containername
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(or use container ID)&lt;/p&gt;

&lt;p&gt;Inspecting Container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker inspect containername

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cleaning Up Images:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker image rm image-id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;_Refer to the &lt;a href="https://youtu.be/ajetvJmBvFo" rel="noopener noreferrer"&gt;CKA2024 Series&lt;/a&gt; by Piyush Sahdeva&lt;br&gt;
Github Repo: &lt;a href="https://github.com/Emmy-code-dev/CKA-2024/tree/main/Day03" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;br&gt;
This post provides a basic overview of the commands covered in the video. Refer to the video for detailed explanations and troubleshooting. Happy coding!&lt;br&gt;
_&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 2/40 CKA Dockerize an Application</title>
      <dc:creator>Emmanuel Oghre</dc:creator>
      <pubDate>Sun, 23 Jun 2024 12:36:01 +0000</pubDate>
      <link>https://dev.to/techprodigy/day-240-cka-dockerize-an-application-k3p</link>
      <guid>https://dev.to/techprodigy/day-240-cka-dockerize-an-application-k3p</guid>
      <description>&lt;p&gt;&lt;strong&gt;Dockerizing Your Project: A Step-by-Step Guide&lt;/strong&gt;&lt;br&gt;
Docker is an essential tool for modern software development, providing a consistent and isolated environment for your applications. In this guide, we will walk you through the process of dockerizing a sample Node.js application. By the end, you will have a Docker image that you can run anywhere, ensuring your application behaves the same in all environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br&gt;
Docker Desktop: Download and install the Docker Desktop client from Docker's official website.&lt;br&gt;
Simplify Setup: By providing a starting point, docker init helps developers get up and running with Docker more quickly, reducing the initial setup time and effort.&lt;/p&gt;

&lt;p&gt;Sample Application: We will use a sample application for this demo. You can clone it from GitHub or use your project.&lt;br&gt;
Step 1: Clone the Sample Repository&lt;br&gt;
First, clone the sample repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/docker/getting-started-app.git
cd getting-started-app/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2: Create a Dockerfile&lt;br&gt;
A Dockerfile is a text file that contains instructions on how to build a Docker image. Create an empty Dockerfile in your project directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch Dockerfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using your preferred text editor, open the Dockerfile and add the following content:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Use the official Node.js 18 image from the Docker Hub
FROM node:18-alpine

# Set the working directory inside the container
WORKDIR /app

# Copy all files from the current directory to the working directory in the container
COPY . .

# Install dependencies using yarn
RUN yarn install --production

# Specify the command to run the application
CMD ["node", "src/index.js"]

# Expose port 3000 to the host
EXPOSE 3000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Build the Docker Image&lt;br&gt;
With the Dockerfile in place, you can build the Docker image. Run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
docker build -t day02-todo .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command tells Docker to build an image named day02-todo using the instructions in the Dockerfile.&lt;/p&gt;

&lt;p&gt;Step 4: Verify the Image&lt;br&gt;
After the build process completes, verify that the image has been created and stored locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
docker images

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see day02-todo listed among the available images.&lt;/p&gt;

&lt;p&gt;Step 5: Push the Image to Docker Hub&lt;br&gt;
To share your Docker image with others or deploy it to another environment, push it to Docker Hub. First, log in to Docker Hub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tag the image with your Docker Hub username and repository name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker tag day02-todo:latest username/new-reponame:tagname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Push the image to Docker Hub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker push username/new-reponame:tagname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 6: Pull the Image to Another Environment&lt;br&gt;
To use the image in another environment, you can pull it from Docker Hub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker pull username/new-reponame:tagname

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 7: Run the Docker Container&lt;br&gt;
Start a container from your Docker image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -dp 3000:3000 username/new-reponame:tagname

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command maps port 3000 of your host machine to port 3000 of the container, allowing you to access the application locally.&lt;/p&gt;

&lt;p&gt;Step 8: Verify the Application&lt;br&gt;
If everything was set up correctly, your application should be running and accessible at &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Step 9: Access the Container&lt;br&gt;
If you need to enter the container for debugging or other purposes, use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
docker exec -it containername sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace containername with the actual name or ID of your running container.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Congratulations! You have successfully dockerized a Node.js application. This Docker image can now be run anywhere, ensuring a consistent environment across development, testing, and production. For further exploration, consider using sandbox environments like &lt;a href="https://labs.play-with-docker.com/" rel="noopener noreferrer"&gt;Play with Docker&lt;/a&gt; or &lt;a href="https://labs.play-with-k8s.com/" rel="noopener noreferrer"&gt;Play with Kubernetes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Kindly refer: &lt;br&gt;
youtube playlist &lt;a href="https://youtu.be/nfRsPiRGx74" rel="noopener noreferrer"&gt;CKA Full Course 2024&lt;/a&gt; by Piyush Sachdeva for more hands-on.&lt;br&gt;
Github Link: &lt;a href="https://github.com/Emmy-code-dev/CKA-2024" rel="noopener noreferrer"&gt;https://github.com/Emmy-code-dev/CKA-2024&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Dockerizing!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>40daysofkubernetes</category>
      <category>cloudopscommunity</category>
      <category>piyushsachdeva</category>
    </item>
    <item>
      <title>🚀Unlock the Power of Docker for Your DevOps Workflow!🚀</title>
      <dc:creator>Emmanuel Oghre</dc:creator>
      <pubDate>Wed, 19 Jun 2024 15:44:46 +0000</pubDate>
      <link>https://dev.to/techprodigy/unlock-the-power-of-docker-for-your-devops-workflow-41go</link>
      <guid>https://dev.to/techprodigy/unlock-the-power-of-docker-for-your-devops-workflow-41go</guid>
      <description>&lt;p&gt;What is Docker? Docker is a game-changing lightweight sandbox environment that packages your application along with its libraries, runtime, and dependencies. This equips your app with everything it needs to run in isolation, making the deployment process seamless. This revolutionary concept is known as containerization, and Docker is at the forefront of this technology.&lt;br&gt;
While Docker leads the charge, there are other noteworthy containerization technologies such as Podman, Containerd, Nerdctl, LXC, runc, and Red Hat OpenShift.&lt;/p&gt;

&lt;p&gt;Why Docker? Have you ever faced the nightmare of an app working flawlessly in the development and test environments but crashing in production? This common issue stems from misconfigurations, misalignments, and functionality problems when moving between different environments. Such discrepancies often lead to conflicts between development teams (who create the app) and operations teams (who manage infrastructure).&lt;/p&gt;

&lt;p&gt;Enter Docker — The Ultimate Solution Docker addresses these challenges by allowing you to ship your code to the production environment with all necessary libraries and dependencies. This eliminates misconfigurations, infrastructure misalignments, networking issues, and unhealthy infrastructure, ensuring your app runs smoothly anywhere. Containerization thus empowers your applications to operate in isolated environments with everything they need to succeed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdks0m7lqrn3zpk3cdkrl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdks0m7lqrn3zpk3cdkrl.png" alt="Docker Architecture Diagram" width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
Streamlining Containerization Tasks Here’s how Docker simplifies your workflow:&lt;br&gt;
Build ➡️ Ship ➡️ Run Application Code&lt;br&gt;
Simple Docker Flow:&lt;br&gt;
Install Docker: Download and install Docker on your local machine from the official Docker website.&lt;br&gt;
Create a Dockerfile: Write a Dockerfile that defines the environment for your application. This typically includes:&lt;br&gt;
A base image (FROM)&lt;br&gt;
Instructions to add the application code (COPY or ADD)&lt;br&gt;
Commands to install dependencies (RUN)&lt;br&gt;
Command to run the application (CMD or ENTRYPOINT)&lt;br&gt;
Build the Docker Image: Use the docker build command to create an image from your Dockerfile.&lt;br&gt;
Push Created Image to Registry: Push your image to a registry like Docker Hub.&lt;br&gt;
Pull Image from Registry: Use the docker pull command to pull the image into your dev, test, and production environments.&lt;br&gt;
Run the Docker Container: Use the docker run command to see if your application is running as expected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvhdegz3gxqvd1pgadjm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvhdegz3gxqvd1pgadjm.png" alt="Docker Workflow" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docker transforms how we develop, test, and deploy applications, making the process efficient, consistent, and error-free. Dive into the world of Docker today and revolutionize your DevOps workflow! 🌟&lt;/p&gt;

&lt;p&gt;👉 Video Link: &lt;a href="https://lnkd.in/dwvdsaGw" rel="noopener noreferrer"&gt;https://lnkd.in/dwvdsaGw&lt;/a&gt;&lt;br&gt;
👉 GitHub Link: &lt;a href="https://lnkd.in/dRu983VZ" rel="noopener noreferrer"&gt;https://lnkd.in/dRu983VZ&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
