250x250
Notice
Recent Posts
Recent Comments
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[Docker & Kubernetes] 3주차 정리 (2) - Chapter 6. 도커를 활용한 Flask 실행 본문

KHUDA 6th/Study

[Docker & Kubernetes] 3주차 정리 (2) - Chapter 6. 도커를 활용한 Flask 실행

시데브 2024. 8. 5. 06:15
728x90

6.1. 실습 환경 구축

6.1.1. Flask 라이브러리 설치

pyenv activate py3_11_6
pip install flask

 

>>> import flask
>>> from importlib.metadata import version
>>> version('flask')
'3.0.3'
>>> quit()

 

6.1.2. Flask 실행을 위한 네트워크 설정

 

6.1.3. Flask로 실행하는 hello world

파일명: main.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
        return 'hello world!'

if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8001)
python main.py

 

 

6.2. Nginx, Flask 연동 후 실행

flask==3.0.0
gunicorn==20.1.0

-> ex01 디렉토리를 복사해서 requirements.txt 추가

 

FROM python:3.11.6

WORKDIR /usr/src/app

COPY . .

RUN python -m pip install --upgrade pip
RUN pip install -r requirements.txt

WORKDIR ./myapp

CMD gunicorn --bind 0.0.0.0:8001 main:app

EXPOSE 8001

-> Dockerfile 추가

 

6.2.3. Nginx 이미지 빌드

upstream myweb{
    server flasktest:8001;
}

server{
    listen 81;
    server_name localhost;

    location /{
        proxy_pass http://myweb;
    }
}

-> 위 default.conf 파일을 가진 myNginx02f 디렉토리 생성

 

FROM nginx:1.25.3
RUN rm /etc/nginx/conf.d/default.conf
COPY default.conf /etc/nginx/conf.d/
CMD ["nginx", "-g", "daemon off;"]

-> Dockerfile 추가

 

이 상태로 이미지 빌드

 

6.2.4. Flask, Nginx 컨테이너 연동

myNginx02f % docker container run -d --name flasktest --network mynetwork02f myflask02
myNginx02f % docker container run -d --name nginxtest --network mynetwork02f -p 81:81 mynginx02f

 

 

6.3. 도커 컴포즈를 활용한 컨테이너 실행

6.3.1. docker-compose.yml 파일 작성

version: "3"

services:
  flasktest:
    build: ./myFlask03
    networks:
      - composenet03
    restart: always

  nginxtest:
    build: ./myNginx03f
    networks:
      - composenet03
    ports:
      - "81:81"
    depends_on:
      - flasktest
    restart: always

networks:
  composenet03:

 

6.3.2. 빌드 및 실행

 


참고자료

  • "한 권으로 배우는 도커 & 쿠버네티스", 장철원, 한빛미디어, 2024.04.29
728x90