diff --git a/.github/workflows/docker-ci.yaml b/.github/workflows/docker-ci.yaml new file mode 100644 index 0000000..5037851 --- /dev/null +++ b/.github/workflows/docker-ci.yaml @@ -0,0 +1,22 @@ +name: Docker CI Pipeline +run-name: ${{ github.actor }} is running out Docker CI Pipeline 🚀 +on: [push] +jobs: + hello-world-job: + runs-on: ubuntu-latest + steps: + - name: Clone the code + uses: actions/checkout@v6 + - name: Build the image + run: docker build -t ${{ vars.DOCKERHUB_USERNAME }}/helloworld-demo-python:v1 . + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Push the image + run: docker push ${{ vars.DOCKERHUB_USERNAME }}/helloworld-demo-python:v1 + - name: Run the container + run: docker run --name helloworld-demo-python -itd -p 8080:8080 ${{ vars.DOCKERHUB_USERNAME }}/helloworld-demo-python:v1 + - name: View the container + run: docker ps diff --git a/Deployment/deployment.yaml b/Deployment/deployment.yaml new file mode 100644 index 0000000..414abaa --- /dev/null +++ b/Deployment/deployment.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: hello-world-deployment + labels: + app: hello-world-python +spec: + replicas: 7 + selector: + matchLabels: + app: hello-world-python + template: + metadata: + labels: + app: hello-world-python + spec: + containers: + - name: hello-world-python + image: nithishkumarrn/helloworld-demo-python:v1 + ports: + - containerPort: 8080 diff --git a/Deployment/k8s-implementation.yaml b/Deployment/k8s-implementation.yaml new file mode 100644 index 0000000..f1a5a81 --- /dev/null +++ b/Deployment/k8s-implementation.yaml @@ -0,0 +1,21 @@ + k8s-implementation: + needs: docker-build-push + runs-on: ubuntu-latest + steps: + - name: Clone the code + uses: actions/checkout@v6 + + - name: Start minikube + uses: medyagh/setup-minikube@latest + - name: Try the cluster! + run: kubectl get pods -A + + - name: Create Deployment and Service + run: | + kubectl apply -f k8s/deployment.yaml + kubectl apply -f k8s/service.yaml + kubectl wait --for=condition=ready pod -l app=hello-world-python + - name: View Deployment and Service + run: | + kubectl get deployments + kubectl get service diff --git a/Deployment/service.yaml b/Deployment/service.yaml new file mode 100644 index 0000000..3358c4f --- /dev/null +++ b/Deployment/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: my-service +spec: + selector: + app.kubernetes.io/hello-world-python: MyApp + ports: + - protocol: TCP + port: 8080 + targetPort: 8080 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6d9c843 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.14.2-alpine3.22 +LABEL version="1.0" +MAINTAINER SanthoshNC +ENV MY_APP="hello-world-python from Nithish Kumar R N" +RUN mkdir /app +WORKDIR /app +COPY . /app +EXPOSE 8080 +CMD ["python3", "app.py"] diff --git a/Terraform/main.tf b/Terraform/main.tf new file mode 100644 index 0000000..f315e42 --- /dev/null +++ b/Terraform/main.tf @@ -0,0 +1,23 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 5.92" + } + } + + required_version = ">= 1.2" +} + +provider "aws" { + region = "us-east-1" +} + +resource "aws_instance" "app_server" { + ami = "ami-0ecb62995f68bb549" + instance_type = "t2.micro" + + tags = { + Name = "learn-terraform" + } +} diff --git a/app.py b/app.py index d3725f0..d9920dd 100644 --- a/app.py +++ b/app.py @@ -16,7 +16,7 @@ def do_GET(self): \____\_______/ -Hello from Docker! +Hello from Docker This is Nithish Kumar R N !! ''') def run():