Old Branch

Docker로 작성한 서버, Debug모드 적용하기

woolbro 2020. 7. 6. 16:31
반응형

💡Docker로 올린 서버는 Debug모드로 실행 한다면, Docker 내부에 들어가서 코드를 고쳐줘야 하는 번거로움이 있다. Docker 내부에서 수정한 파일은, Docker를 내리거나 지우면 없어지며 혹은 local의 git과 연동되지 않는 문제점이 있다.

Docker로 서버 Debug모드 적용하기

  • 간단하게 Dockerfile로, flask 서버를 작성 해 보도록 하겠습니다.

Flask 서버 만들기

여러번 다루었지만, Flask 서버를 시작하기 위해서 가상환경과 필요 패키지들을 설치 해 주도로 하겠다.

.env

FLASK_ENV=development
FLASK_DEBUG=True
FLASK_APP=app.py
FLASK_RUN_PORT=5000

app.py

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)

Dockerfile

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 Run & Build

$ docker build  -t flask_dev -f Dockerfile . && docker run -p 5000:5000 flask_dev

도커파일이 만들어지고 실행이 되었으니 서버로 동작 합니다!

그런데 우리가 작성한 flask 코드를 아무리 수정해도 docker 파일이 수정되지 않습니다.

Docker file에 옵션을 주자

두가지 방법이 있다. Docker Run 옵션을 주는 것과 docker-compose.yml 을 수정 해 주는 것이다.

1번 방법 - Dockerfile Run Command 수정하기

$ docker build  -t flask_dev -f Dockerfile . && docker run -p 5000:5000 --volume=$(pwd):/www flask_dev

2번 방법 - docker-compose.yml을 사용해보기

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 등 많은 곳에 적용 할 수 있다.