새소식

Docker

[🐳Docker] Flask App 띄우기

  • -

가상환경 만들기

C:\docker_study\flask_practice>python -m venv venv

가상환경 실행

C:\docker_study\flask_practice>venv\Scripts\activate

flask 설치

(venv) C:\docker_study\flask_practice>pip install flask

설치 확인

(venv) C:\docker_study\flask_practice>pip freeze
click==8.1.3
colorama==0.4.5
Flask==2.1.2
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.1
Werkzeug==2.1.2

flask 실행

python app.py

app.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=5000)

Dockerfile 작성하기

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  : 어떤 리눅스를 사용할 지, 해당 Docker의 이미지를 지정

COPY .  은 현재 디렉토리,  /app 은 컨테이너의 디렉토리 → docker build를 실행하는 곳의 파일을 /app으로 복사

WORKDIR : 컨테이너에서 명령어가 실행되는 디렉토리, 앞에서 /app에 소스코드를 copy했으므로 /app에서 실행

RUN : 컨테이너를 구성할 파일을 만들 때 사용
           위 Dockerfile에서는 flask 라이브러리 설치, app.py의 권한을 바꿔주는 명령어가 실행

CMD : 컨테이너가 실행된 후 실행할 명령어
           위 Dockerfile에서는 app.py를 실행하여 flask를 실행한다.

 

Dockerfile로 Build

C:\docker_study\flask_practice>docker build -t flask-app .

이미지 확인

C:\docker_study\flask_practice>docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
flask-app    latest    7fb384a3438b   2 minutes ago   76.1MB

Container 확인

아직 띄우지 않아서 없는 것을 알 수 있다.

C:\docker_study\flask_practice>docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Container 띄우기

C:\docker_study\flask_practice>docker run -d -p 5000:5000 flask-app

app.py를 수정할 경우 다시 컨테이너를 빌드하고 다시 띄어주어야 한다.

우선 컨테이너를 종료한다.

C:\Users\korea>docker ps
CONTAINER ID   IMAGE       COMMAND            CREATED         STATUS              PORTS                    NAMES
21925ba1dcd8   flask-app   "python3 app.py"   2 minutes ago   Up About a minute   0.0.0.0:5000->5000/tcp   brave_keller

C:\Users\korea>docker kill 21925ba1dcd8
21925ba1dcd8

다시 빌드

C:\docker_study\flask_practice>docker build -t flask-app .
C:\docker_study\flask_practice>docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
flask-app    latest    c5f8cf2050f6   17 seconds ago   76.1MB
<none>       <none>    7fb384a3438b   7 minutes ago    76.1MB

C:\docker_study\flask_practice>docker run -d -p 5000:5000 flask-app
8e004de4cc539aaa16f9be53625fc1cd2f13248b4ea0c5c5eb4a21b8d97ca6ba

 

다른 버전으로도 build해서 띄울 수 있다.

C:\Users\korea>docker build -t flask-app:v2 .
C:\docker_study\flask_practice>docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
flask-app    latest    c5f8cf2050f6   6 minutes ago    76.1MB
flask-app    v2        c5f8cf2050f6   6 minutes ago    76.1MB
<none>       <none>    7fb384a3438b   13 minutes ago   76.1MB

latest 버전을 끄지 않았으므로 v2를 실행할 때는 다른 포트로 띄워주어야 한다.

C:\docker_study\flask_practice>docker run -d -p 5001:5000 flask-app:v2
1c7d9100bd5349ebed6f15a0b27426efb65a9dfb9b11d0f8aea0c0b273a02a35
728x90

'Docker' 카테고리의 다른 글

github로 Docker Image 공유  (0) 2022.09.05
Dockerfile  (0) 2022.09.05
Docker 명령어  (0) 2022.09.01
[🐳Docker] image 삭제하기  (0) 2022.07.07
[🐳Docker] nginx 띄우기  (0) 2022.07.07
Contents