💡Docker로 올린 서버는 Debug모드로 실행 한다면, Docker 내부에 들어가서 코드를 고쳐줘야 하는 번거로움이 있다. Docker 내부에서 수정한 파일은, Docker를 내리거나 지우면 없어지며 혹은 local의 git과 연동되지 않는 문제점이 있다.
여러번 다루었지만, Flask 서버를 시작하기 위해서 가상환경과 필요 패키지들을 설치 해 주도로 하겠다.
FLASK_ENV=development FLASK_DEBUG=True FLASK_APP=app.py FLASK_RUN_PORT=5000
from flask import Flask app = Flask(__name__) @app.route('/',methods=['GET']) def index(): return "hi!" if __name__ == '__main__': app.run(host='0.0.0.0',port=5000)
FROM python:3 ADD . /www WORKDIR /www RUN python3 -m pip install -U pip RUN pip3 install flask RUN pip3 install python-dotenv CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]
$ docker build -t flask_dev -f Dockerfile . && docker run -p 5000:5000 flask_dev
도커파일이 만들어지고 실행이 되었으니 서버로 동작 합니다!
그런데 우리가 작성한 flask 코드를 아무리 수정해도 docker 파일이 수정되지 않습니다.
두가지 방법이 있다. Docker Run 옵션을 주는 것과 docker-compose.yml 을 수정 해 주는 것이다.
$ docker build -t flask_dev -f Dockerfile . && docker run -p 5000:5000 --volume=$(pwd):/www flask_dev
version: '3' services: flask_dev: build: context: . dockerfile: Dockerfile env_file: - .env ports: - 5000:5000 volumes: - ./:/www
$ docker-compose up --build
이제 소스파일을 수정하면, Docker에 올라간 서버가 수정 될 때 마다 reload 되는 것을 볼 수 있다.
간단하게 작성 하기 위해서 flask서버를 사용했지만, flask외에 Django, Dart, Spring, node 등 많은 곳에 적용 할 수 있다.