실행 중인 flask web 페이지를 수정한다.
코드 수정 시 바로 반영하도록 ENV를 설정해준다.
[root@kw1 flaskImage]# cat Dockerfile
FROM python:3.6
# 현재 디렉토리의 모든 파일들을 컨테이너의 /app 디렉토리에 복사한다.
COPY . /app
# flask의 작업 위치가 /app이라는 뜻
WORKDIR /app
ENV FLASK_APP="/app/ksFlask.py"
ENV FLASK_DEBUG="True"
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "/app/ksFlask.py"]
수정 시 바로 반영되게 debug=True를 추가함
from flask import Flask, render_template, url_for
app = Flask(__name__)
@app.route('/')
def web():
return "kyeongseo's flask web page"
@app.route('/image')
def image():
return render_template("index.html")
if __name__ == "__main__":
app.run(host="0.0.0.0",debug=True)
index.html을 작성한다.
[root@kw1 flaskImage]# cat templates/index.html
<!doctype html>
<html>
<head>
</head>
<body>
<img src="{{ url_for('static', filename='./img.jpg') }}">
</div>
</body>
</html>
전체적인 구조는 아래와 같음
[root@kw1 flaskImage]# tree
.
├── Dockerfile
├── ksFlask.py
├── requirements.txt
├── static
│ ├── img.jpg
│ └── winter.gif
└── templates
└── index.html
이미지를 빌드한다.
[root@kw1 flaskImage]# docker build -t modifytest .
local에서 build한 이미지를 사용하기 위해 --image-pull-policy=Never 옵션을 사용함
[root@kw1 flaskImage]# kubectl run modify --image=modifytest:latest --image-pull-policy=Never
NodePort type의 service를 생성한다.
[root@kw1 flaskImage]# kubectl expose pod modify --type=NodePort --port=5000
service/modify exposed
nodePort를 확인한다. (31885)
[root@kw1 flaskImage]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
modify NodePort 10.100.94.34 <none> 5000:31885/TCP 14s
web page를 확인한다.
172.30.1.145:31885 확인
172.30.1.145:31885/image 확인
위의 pod을 수정함.
exec 명령을 사용해 modify pod에 접속한다.
[root@kw1 flaskImage]# kubectl exec modify -it -- bash
root@modify:/app#
실행 중인 pod에 package 설치 링크를 참고해 vim을 설치한다.
img.jpg -> winter.gif로 index.html을 수정한다.
root@modify:/app# vim templates/index.html
root@modify:/app# cat templates/index.html
<!doctype html>
<html>
<head>
</head>
<body>
<img src="{{ url_for('static', filename='./winter.gif') }}">
</div>
</body>
</html>
ksFlask.py를 수정한다.
root@modify:/app# vim ksFlask.py
root@modify:/app# cat ksFlask.py
from flask import Flask, render_template, url_for
app = Flask(__name__)
@app.route('/')
def web():
return "kyeongseo's flask web page modify page"
@app.route('/image')
def image():
return render_template("index.html")
if __name__ == "__main__":
app.run(host="0.0.0.0",debug=True)
web page가 수정되었는 지 확인한다.
172.30.1.145:31885 확인
172.30.1.145:31885/image 확인
'kubenetes' 카테고리의 다른 글
etcd backup, restore (0) | 2022.09.15 |
---|---|
docker 이미지 수정하는 방법 (1) | 2022.04.05 |
ImagePullBackOff error 해결 (0) | 2022.04.02 |
kubernetes 실행 중인 pod에 접속해 package 설치 (0) | 2022.03.30 |
kubernetes pod에 파일 복사하고 다운로드 받기 (0) | 2022.03.30 |
댓글