venv
여러 프로젝트를 하나의 장비에서 실행할때 각 프로젝트마다 사용하는 패키지들의 버젼이 달라서 충돌이 생길수 있는데 그런 일을 미연에 방지하기 위해서 각 프로젝트 마다 virtual environment, venv를 설정하고 충돌없이 사용할수 있도록합니다. 아래 명령어를 통해서 venv를 하나 생성해주세요.
$ python3 -m venv ./venv
그러면 venv폴더에 독립된 개발환경이 저장이 됩니다. 생성만 한다고 해서 바로 실행되는건 아니에요. 아래 명령어로 활성화를 시켜줍니다.
$ source ./venv/bin/activate
그러면 프롬프트 앞에 (venv)
라고 뜰거에요. 이제 이 상태에서 개발 진행하시고 venv를 비활성화 시키고 싶으시면 deactivate
명령어로 venv에서 빠져나오시면 됩니다.
(venv) $ deactivate
Flask
이제 해당 venv에 Flask를 설치해보도록 하겠습니다.
pip install Flask
버젼을 확인해볼까요?
$ Flask --version
Python 3.13.0
Flask 3.0.3
Werkzeug 3.1.3
Docker
우선 Flask App을 하나 만들어서 app.py
로 저장합니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
requirements.txt
라는 파일을 만들어서 그안에 아래와 같이 저장합니다.
Flask==3.0.3
Dockerfile
이라는 파일을 만들어서 아래와 같이 명령을 나열합니다.
FROM python:3-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["flask", "run", "--host=0.0.0.0"]
Command line에 아래의 명령어를 입력해서 Docker Image를 build합니다.
(venv)$ docker build -t cms .
Docker이미지가 잘 생성이 되었는지 확인해볼까요?
(venv)$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
cms latest 8fcfeb378ee4 12 minutes ago 151MB
만들어진 이미지를 한번 실행해 볼게요. 나중에 실행을 취소할때 편리하도록 컨테이너에 cms라는 이름을 주고 실행을 하도록 하겠습니다.
(venv)$ docker run --name cms -d -p 5000:5000 cms
7e672b644d6470c14ff5fed1b53e0420662941a1ee2b5218193ef1c1dd32b147
docker ps
를 통해서 실행이 잘 되었는지 확인해보실 수 있습니다.
(venv)$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c873bfa10db cms "flask run --host=0.…" 4 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp cms
브라우저를 열고 http://localhost:5000/ 를 입력해서 확인해볼게요

컨테이너를 실행중지하시려면 아까 부여한 이름으로 docker stop
을 하시면 됩니다.
(venv)$ docker stop cms
cms
(venv)$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES