python flash 앱(oncall-bot)을 docker로 띄우려 할 때.. Dockerfile를 아래처럼 할 수 있다.
FROM python:2.7-onbuild
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["oncall-bot.py"]
실행하는 방법은 다음과 같다.
docker build -t oncall-bot:lastest .
docker run --rm -p 5000:5000 oncall-bot:lastest
로그도 잘 나온다.
그러나 gunicorn을 사용할 때는 상황이 다르다. task 기반이라..
코드에 아래와 같이 handler를 추가한다.
app = Flask(__name__)
app.logger.addHandler(logging.StreamHandler(sys.stdout))
app.logger.setLevel(logging.INFO)
함수 내에서 아래와 같이 사용한다.
app.logger.info("-------------request.data-------------")
app.logger.info(request.data)
requirements.txt에 다음과 같이 gunicorn을 추가한다.
Flask
gunicorn
requests
Dockerfile에서는 아래와 같이 수정한다.
FROM python:2.7-onbuild
EXPOSE 5000
CMD [ "gunicorn", "--workers", "4", "--bind", "0.0.0.0:5000", "--reload", "oncall-bot:app" ]
로그는 취합되어서 나온다.
[~] docker logs 52a39cf13d4d
[2017-11-08 08:56:45 +0000] [1] [INFO] Starting gunicorn 19.7.1
[2017-11-08 08:56:45 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2017-11-08 08:56:45 +0000] [1] [INFO] Using worker: sync
[2017-11-08 08:56:45 +0000] [10] [INFO] Booting worker with pid: 10
[2017-11-08 08:56:45 +0000] [12] [INFO] Booting worker with pid: 12
[2017-11-08 08:56:45 +0000] [14] [INFO] Booting worker with pid: 14
[2017-11-08 08:56:45 +0000] [19] [INFO] Booting worker with pid: 19
-------------request.data-------------
'docker' 카테고리의 다른 글
[docker] mac docker에서 k8s를 사용할 수 있다고 한다.. - 펌질 (0) | 2018.01.25 |
---|---|
[docker] ipv6 지원 (0) | 2017.11.24 |
docker container 로그 보기 (0) | 2017.11.06 |
[docker] 도커 개념/용어 (0) | 2017.10.28 |
[docker] 맥에서 도커 컨테이너 실행 시, 포트 연결이 되게 하기(실수담 포함) (0) | 2017.10.28 |