Docker로 Flask App 띄우기
가상환경 생성
venv 생성
python -m venv venv
디렉터리 확인
dir
python app.py 를 입력하면 내용을 확인할 수 있는 주소가 출력된다.
python app.py
venv 활성화
venv\Scripts\activate.bat
venv가 활성화되면, 앞에 (venv) 가 출력됨
flask 설치
pip install flask
설치된 라이브러리 목록 확인
pip freeze
Flask App
구글에 python flask 를 검색한 뒤 플라스크 페이지에서
'Quick Start' 부분에 있는 코드를 가져온다.
# hello world를 출력하는 앱
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'hello world'
if __name__ == '__main__':
app.run(host='0.0.0.0', port= 5000)
Dockerfile 작성하기
Dockerfile?
Docker image의 설계도
Dockerfile의 os == 포크레인 몸체
파일이름은 Dockerfile로 설정하는 것이 기본
FROM python:3.8-alpine
COPY . /app
WORKDIR /app
RUN pip3 install flask
RUN chmod +x /app/app.py
CMD ["python3", "app.py"]
FROM → 어떤 리눅스를 사용할 것인지 (Python, node, Java, ... )
COPY → 파일 복사 ( docker build를 실행하는 곳의 파일을 /app으로 복사 )
WORKDIR → 컨테이너에서 명령어가 실행되는 디렉토리. 컨테이너가 실행되었을 때 시작 점을 지정
RUN → 컨테이너를 구성할 파일(이미지)을 만들 때 사용
CMD → 컨테이너가 실행된 후에 실행할 명령어
Dockerfile.txt -> Dockerfile로 파일 확장명 변경
move Dockerfile.txt Dockerfile
Docker build 후 Container로 띄우기
※ 이때 맨 뒤에 . 을 붙여주지 않으면 빌드가 되지 않으므로 주의한다.
docker build -t flask-app .
오류 해결

----> 처음에 실행에 실패했었는데, 도커파일에 작성된 FROM을 살펴보니 띄어쓰기 때문에 제대로 읽히지 않았던 것.
FROM python: 3.8-alpine 에서 FROM python:3.8-alpine으로 수정하니 잘 실행되었다.
flask images로 설치확인
docker run으로 컨테이너 실행
docker run -d -p 5000:5000 flask-app
* 앞에서 flask app을 만들 때 5000port를 입력했기 때문에 -p 5000:5000 으로 옵션을 띄운다
그리고 웹브라우저에서 localhost 5000번을 입력
flask app 이 떠있는 것을 확인한다.
docker ps