<?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: Toji Zenin</title>
    <description>The latest articles on DEV Community by Toji Zenin (@toji_zenin_f2f4adbaaad7a1).</description>
    <link>https://dev.to/toji_zenin_f2f4adbaaad7a1</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%2F3488822%2F971afdaf-8957-4421-a2dd-819e1258d0a3.png</url>
      <title>DEV Community: Toji Zenin</title>
      <link>https://dev.to/toji_zenin_f2f4adbaaad7a1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/toji_zenin_f2f4adbaaad7a1"/>
    <language>en</language>
    <item>
      <title>How I Deployed a Flask App with Docker, CI/CD, and Monitoring — My First Real DevOps Project as a Fresher</title>
      <dc:creator>Toji Zenin</dc:creator>
      <pubDate>Mon, 13 Oct 2025 04:32:15 +0000</pubDate>
      <link>https://dev.to/toji_zenin_f2f4adbaaad7a1/how-i-deployed-a-flask-app-with-docker-cicd-and-monitoring-my-first-real-devops-project-as-a-nbf</link>
      <guid>https://dev.to/toji_zenin_f2f4adbaaad7a1/how-i-deployed-a-flask-app-with-docker-cicd-and-monitoring-my-first-real-devops-project-as-a-nbf</guid>
      <description>&lt;p&gt;As a fresher starting my DevOps journey, I wanted to get hands-on experience by building a complete project that covered deployment, automation, and observability. Recently, I worked on a Flask-based backend with a frontend, and deployed it using Docker, GitHub Actions (CI/CD), Prometheus, and Grafana on AWS EC2.&lt;/p&gt;

&lt;p&gt;This project gave me a clear view of how real-world DevOps workflows are built and managed. Here’s my journey:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setting Up the Environment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Launched an AWS EC2 Ubuntu instance.&lt;/p&gt;

&lt;p&gt;Configured security groups to allow ports (22, 80, 8080, 8000, 9090, etc.).&lt;/p&gt;

&lt;p&gt;Installed Docker and Git for containerization and version control.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dockerizing the Applications&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Created Dockerfiles for both Flask backend and frontend.&lt;/p&gt;

&lt;p&gt;Defined services in a docker-compose.yml file.&lt;/p&gt;

&lt;p&gt;Exposed backend on port 8000 and frontend on 8080.&lt;/p&gt;

&lt;p&gt;Tested containers locally using docker ps and checked application through public IP.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;CI/CD Pipeline with GitHub Actions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Added a GitHub Actions workflow to build and push Docker images on every commit.&lt;/p&gt;

&lt;p&gt;Ensured automation of testing and container build.&lt;/p&gt;

&lt;p&gt;Verified pipeline runs through GitHub Actions dashboard.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Monitoring with Prometheus &amp;amp; Grafana&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Configured Prometheus to scrape backend metrics.&lt;/p&gt;

&lt;p&gt;Setup Grafana dashboards to visualize application health.&lt;/p&gt;

&lt;p&gt;Verified metrics like uptime and API response using dashboards.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Handling Challenges&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Initially frontend didn’t load because port 8080 wasn’t allowed → fixed by updating security group.&lt;/p&gt;

&lt;p&gt;Faced persistence issue after restarting container → solved using Docker volumes for data persistence.&lt;/p&gt;

&lt;p&gt;Prometheus config required corrections (backend:8000 target) before it started working properly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Final Outcome&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Flask backend + frontend running in Docker&lt;/li&gt;
&lt;li&gt; Automated builds with CI/CD&lt;/li&gt;
&lt;li&gt; Monitoring &amp;amp; observability with Prometheus + Grafana&lt;/li&gt;
&lt;li&gt; Application accessible through public IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key Takeaways as a Fresher&lt;/p&gt;

&lt;p&gt;Learned end-to-end DevOps workflow in a practical way.&lt;/p&gt;

&lt;p&gt;Understood importance of ports, volumes, and container networking.&lt;/p&gt;

&lt;p&gt;Gained confidence in setting up CI/CD pipelines and observability tools.&lt;/p&gt;

&lt;p&gt;This project gave me a strong foundation and boosted my confidence to take on bigger challenges in DevOps. 🚀&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>aws</category>
    </item>
  </channel>
</rss>
