Skip to content

Deploying Docker Python Application in AWS EC2 Using Github Actions CI/CD (self hosted runner)

Notifications You must be signed in to change notification settings

Raghul-M/Docker_Github-Actions_AWS-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker_Github_Actions_AWS_App

This project demonstrates a CI/CD pipeline using GitHub Actions to build a Dockerized Python application and deploy it to an AWS EC2 instance.

Workflow

Streamlit -app

  1. Code Commit: Developers push code changes to the main branch.
  2. CI Build Job: GitHub Actions triggers a build job (build.yml) upon code commit.
  3. Docker Image Build: The CI job builds a Docker image from the Dockerfile and pushes it to Docker Hub upon successful build.
  4. CD Deploy Job: After the image is pushed, another GitHub Actions job (deploy.yml) is triggered.
  5. Deployment to AWS EC2:
    • The deploy job uses a self-hosted runner on an AWS EC2 instance.
    • It pulls the latest Docker image from Docker Hub.
    • The image is then run as a container on the EC2 instance. Screenshot from 2024-06-29 13-39-57

Repository Structure

  • .github/workflows/: Contains GitHub Actions workflows.
    • build.yml: Defines CI build steps.
    • deploy.yml: Defines CD deployment steps.
  • Dockerfile: Configuration for building the Docker image.
  • README.md: Project documentation (you are currently reading this file).

Prerequisites

Before running the CI/CD pipeline, ensure you have set up the following:

  • GitHub Repository: Configure secrets for Docker Hub credentials (DOCKER_USERNAME, DOCKER_PASSWORD) as Repo Secrets.
  • Docker Hub Account: Repository for storing Docker images.
  • AWS EC2 Instance: Ensure the instance is running and accessible via SSH.and Configured Self-Hosted Runner

Screenshot from 2024-06-29 13-38-02

Usage

  1. Fork and Clone: Fork this repository and clone it to your local machine.
  2. Set GitHub Secrets:
    • Navigate to your GitHub repository > Settings > Secrets.
    • Add the following secrets:
      • DOCKER_USERNAME: Your Docker Hub username.
      • DOCKER_PASSWORD: Your Docker Hub password.
  3. Configure a Self hosted Runner : Go to Settings > Actions > Self-hosted runners.
  4. Push to main Branch: Push your changes to the main branch to trigger the CI/CD pipeline.
  5. Monitor Execution: View the progress of the CI/CD pipeline in the Actions tab of your GitHub repository.
  6. Verify Deployment: Access your AWS EC2 instance to verify that the Docker container is running successfully.

Notes

  • Ensure that your Dockerfile is configured correctly to build and run your Python application.
  • Regularly monitor and maintain your AWS EC2 instance to ensure proper functioning of the deployed application.

Deployement

Screenshot from 2024-06-29 13-25-03

Contributing

Contributions are welcome! If you have suggestions, bug reports, or want to add new features, feel free to submit a pull request.

Feel free to explore, contribute, and adapt this project to suit your needs. If you encounter any issues or have suggestions for improvement, please raise them in the GitHub repository's issues section. Happy coding! 🚀

Connect with me on linkedin: Raghul M

About

Deploying Docker Python Application in AWS EC2 Using Github Actions CI/CD (self hosted runner)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published