Heroku Deploy with Docker

문석·2020년 7월 16일
2
도커, 쿠버네티스, 컨테이너, 오케스트레이션... 나만 빼고 다 아는 것 같아 간단한 튜토리얼을 진행해보았다.

Docker 이미지를 Heroku에 배포하는 간단한 실습

참조
이렇게 두 가지 방식이 있고 상단의 Container Registry를 이용해서 배포를 진행할 것이다.

그런데 🧞‍

Docker와 같은 Container 기술을 사용해 Heroku Elasticbeanstalk과 같은 PaaS를 제공하는데
'다시 PaaS에 Container를 올린다?'
의문이 든다. 어떤 장점을 가질 수 있을까. 나같은 경우에는 기존에 히로쿠에 배포하던 서비스를 도커 연습삼아 히로쿠에 올리는 실습을 하려 한 건데.. 내 프로젝트의 경우에는 환경변수 말고는 개발 환경에 따른 추가 설치 혹은 설정을 할 필요가 없었고 고로 굳이 Docker를 사용한다쳐도 장점이 없다. 내 경우엔 백프로 연습으로 귀결. 그래서 도커를 히로쿠에서 지원하는 이유는?
Deploying with Doker 히로쿠 장점
여기 나와있는데 Orchestration을 지원하니 어찌보면 쿠버네티스 느낌의 장점을 가질 수도 있다고 할지언정 사용은 안 할듯. Heroku 관련 문서는 공식 문서 제외 찾기가 쉽지 않다. 국산이라면 더더욱..

실습 진짜 시작

확실히 서론이 본론보다 길 것 같은 예감이 든다
Docker 설치가 되어있고 Heroku CLI가 설치 되어있고 Heroku Login(on cli) 가 되어있는 환경
나는 Win10 HOME 따리라서 DockerToolbox 를 설치했다. Win10은 추가로 Hyper-V 레지스트리 설정도 해줘야되는데 검색하면 잘 나오니 패스
프로젝트 루트 디렉토리에 Dockerfile을 만든다. 확장자 없는 이름이 'Dockerfile'인 파일, 이미지 생성시 알아서 인식하고 해당 Dockerfile에 나와있는 Step 대로 빌드해줌.
Dockerfile

FROM node:12

# app dir 생성
WORKDIR /src/app

# package-lock까지 가져가자
COPY package*.json ./

RUN yarn

COPY . .

EXPOSE 5000
CMD yarn run dev
Heroku command
heroku container:login
heroku create
heroku container:push web
heroku container:release web
heroku open
Heroku Doc 링크
저 5줄이면 Docker image를 생성하고 heroku에 배포한다. heroku open을 통해 15초 정도 후에 바로 나온다. 위에 Dockerfile은 내가 Heroku 이전에 로컬에서 Docker로 이미지 만들고 배포했을 때 사용한 것이니 그냥 허전함 달래기 용.
Heroku Dashboard 들어가보면 요상한 이름의 Container가 올라가 있는 것을 확인할 수 있고 이름도 변경할 수 있다. 후다닥 끝내고 나니 Heroku와 Docker의 관계에 대해 궁금증만 증폭되었다. 나중에 다시 포스팅 하겠음!

0개의 댓글