Flask app 이 준비되어 있을 때 docker로 배포하는 과정
1. Dockerfile 만들기 (flask 내부 서버 이용)
# base-line image
FROM python:3.9.6-buster
# 프로젝트 clone
# ex) git clone https://github.com/flask_app.git
RUN git clone "Github에 있는 Flask app"
# 작업 디렉토리를 "git clone 한 repository 경로" 으로 지정
# ex) WORKDIR /flask_app
WORKDIR "git clone 한 repository 경로"
# pip install 실행
RUN pip install -r requirements.txt
# 환경변수 설정
# ENV FLASK_APP flask
ENV FLASK_APP "Flask app 이름"
# entrypoint
ENTRYPOINT ["flask"]
# 컨테이너 실행 시 flask run --host 0.0.0.0 실행
# --port 포트번호 => 포트번호 설정가능 기본포트 5000
CMD ["run", "--host", "0.0.0.0"]
- RUN
- 컨테이너를 생성하면서 실행할 CLI 명령어 지정
- WORKDIR [PATH]
- 작업 디렉토리로 이동하는 것. cd 명령이랑 비슷함
- ENV
- 환경변수를 설정한다.
- ENTRYPOINT
- 컨테이너를 실행 시 실행하는 명령어 지정
- CMD
- 컨테이너를 실행 시 실행하는 default 명령어
- 실행 시 따로 명령어를 사용하지 않을 시 default로 CMD로 지정한 명령어 사용
- 위와 같은 경우 따로 지정하지 않을 시 $ flask run —host 0.0.0.0 이 실행된다.
- 지정했을 경우, $ flask [명령어] 이 실행된다.
2. docker image 빌드하기
$ docker build -t '이미지명' .
3. Container 생성하고 실행하기
$ docker run -d --name '컨테이너 이름' -e TZ=Asia/Seoul -p '호스트 포트':'컨테이너 포트' '이미지명'
- '-p' 옵션
- 호스트 운영체제와 컨테이너 환경의 포트를 매핑시키기 위한 옵션 (포트 포워딩)
- '-d' 옵션
- 이 옵션을 없애면 컨테이너 실행 시 나오는 로그들 보여줌.
- '-P' 옵션
- 호스트 운영체제의 랜덤 포트가 컨테이너의 포트에 매핑됨
- ex) 0.0.0.0:(랜덤 포트 번호) → 컨테이너:(EXPOSE로 선언한 포트 번호)로 매핑됨
- '-e' 옵션
- 컨테이너를 실행하면서 환경변수 설정
- ex) -e TZ=Asia/Seoul
- → timezone을 서울로 변경 (default : 영국)
4. 이미지 push 하기
# Docker 로그인
$ docker login -u 'docker hub ID'
# 이미지에 tag 달기
$ docker tag '기존 이미지명' 'docker ID'/'이미지명'
# 이미지 docker hub에 push
$ docker push '이미지명'
5. 이미지 pull 하기
$ docker pull '이미지명'
클라우드 서버에 접속하여 도커만 설치되어 있으면,
image를 pull 하여 별다른 설정을 안 하고 배포가 가능함.
'Docker' 카테고리의 다른 글
[Docker] AWS EC2에 Docker로 MySQL 띄우기 (0) | 2022.01.08 |
---|---|
[Docker] centos 컨테이너에서 systemctl 명령어가 안될 때 (0) | 2022.01.01 |
[Docker] ubuntu에서 docker 설치 하는 방법 (1) | 2021.12.15 |
[Docker] Docker로 리눅스(centos) 설치 (1) | 2021.12.09 |