1-Tier-App-Deployment
Intro:
vim app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) # Runs on port 5000
Escape:wq
vim requirements.txt:
flask==2.3.2
Escape:wq
vim Dockerfile:
# Base image
FROM python:3.9-slim
# Set working directory
WORKDIR /app
# Copy requirements and install
COPY requirements.txt .
RUN pip install -r requirements.txt
# Copy the app file
COPY app.py .
# Document that the app uses port 5000
EXPOSE 5000
# Run the app
CMD ["python", "app.py"]
Escape:wq
docker build -t 1-tier-app-deployment:v1 .
docker run -it -p 5000:5000 1-tier-app-deployment:v1
Open 5000
Copy public-ip:5000
Now, you can see our docker container is running
Ctrl + C
Docker PUsh:
docker login
Username: YOUR-DOCKERHUB-USERNAME
Password: YOUR-DOCKERHUB-PASSWORD
Login succeeded
docker tag 1-tier-app-deployment:v1 YOUR-DOCKERHUB-USERNAME/1-tier-app-deployment:v1
docker push YOUR-DOCKERHUB-USERNAME/1-tier-app-deployment:v1
You can see ss our image has has in dockerhub account
Create a new folder:
mkdir k8s-manifests
cd k8s-manifests
vim deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
labels:
app: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: YOUR-DOCKERHUB-USERNAME/1-tier-app-deployment:v1 # 👈 Your Docker Hub username
ports:
- containerPort: 80
Escape:wq
vim service.yaml:
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 32402 # Assign the desired NodePort here
type: NodePort # Change type to NodePort
Escape:wq
vim app.py: → Hello World! -> Well done!
Docker Build & Push:
docker build -t 1-tier-app-deployment:v2 .
docker run -it -p 5000:5000 1-tier-app-deployment:v2
Now you can see well done has written show ss
Ctrl + C
Psh to dockerhub
docker tag 1-tier-app-deployment:v2 YOUR-DOCKERHUB-USERNAME/1-tier-app-deployment:v2
docker push YOUR-DOCKERHUB-USERNAME/1-tier-app-deployment:v2
Thanks
Thanks




