안녕하세요, 이번 시간에는 간단한 python flask 코드를 docker image로 실행시켜보는 시간을 가져볼거에요.

 

도커(Docker)는 컨테이너 기반 오픈소스 가상화 플랫폼입니다. 그렇다면 Docker image란 무엇일까요?

도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker image라고 합니다. 다시 말해, 컨테이너 실행(생성)에 필요한 모든 파일과 환경을 지닌 것입니다. 예를 들어서 어떤 프로젝트 도커 이미지는 그 프로젝트를 실행하기 위한 모든 파일을 가지고 있는 덩어리라고 생각하면 됩니다.

추가로 Docker image를 만들고 나면 실행을 해야하는데, 이 이미지를 실행한 상태를 도커 컨테이너(Docker Container)라고 합니다. 즉, 프로그램 및 프로그램 실행 환경을 담고 있는 패키지 이미지입니다. 여러 도커 이미지들이 모여 컨테이너가 되기도 하고 필요없으면 이미지를 버리기도 하면서 원하는 실행환경을 만드시면 됩니다. 

 

 

 

이제 개념을 알았다면 한번 만들어볼까요!

※ 개발환경은 ubuntu와 github을 사용했습니다. 

 

python flask를 docker image로 실행시키기

1.디렉토리 생성 및 파일 생성

$ mkdir docker_image_making 
$ cd docker_image_making​

2. 디렉토리 내에 requirements.txt 파일 생성

$ echo "Flask==0.12.2" > requirements.txt 
$ touch hello.py 
$ vi requirements.txt

3. requirements.txt에 들어갈 내용

Flask==0.12.2 
bs4 
requests

4. Dockerfile 생성

$ vi Dockerfile

- 위 내용을 입력한 후, ESC 버튼을 누르고 :wq 를 입력하여 파일을 저장한다. 

FROM python 
COPY . /app 
WORKDIR /app 
RUN pip install flask 
EXPOSE 5000 
CMD ["python", "hello.py"]

5. python flask hello.py 파일 생성

- 에러가 난다면 $ pip3 install flask 또는 $ pip install flask를 본인의 python 버전에 맞게 실행시켜 라이브러리를 다운받는다.
- 그래도 에러가 난다면 $ pip uninstall beautifulsoap 또는 $ pip uninstall beautifulsoap4를 해보자!

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
	return "Hello World!" 
    
if __name__=='__main__': 
	app.run(debug=True,host='0.0.0.0')

6. 파이썬 파일이 잘 실행되는지 확인하기

$ python3 hello.py

 

 

 

도커 이미지 만들기
  • 이제 파일들을 다 생성했다면 도커 이미지를 만들 차례이다.
$ docker build --tag [이미지명] 

    ex) $ docker build --tag image-test

  • 잘 만들어 졌는지 확인하기
$ docker image ls

  • 실행시키기
$ docker run -d -p [포트넘버] image-test
  • 현재 실행되고 있는 파일 확인하기
$ docker ps

포트포워딩 및 실행 된 화면

+ Recent posts