■ AWS, ■ Linux, ■ MongoDB, ■ Node.js

[AWS] 아마존 웹 서비스에 Dokku (Mini Heroku)를 배포해보자! pt.2 (1)

이제 Dokku를 설치했으니 실제 배포를 해보겠습니다.

여기선 node.js를 배포해보도록 하겠습니다. express 나 기타 node.js server를 생성합니다.

이후 터미널을 통해 해당 app.js가 있는 폴더로 들어옵니다. 그리고 아래와 같이 git를 이용해서 remote를 추가시켜줍니다.

여기서 remote의 의미는 해당 git 데이터들을 push할때 올릴 remote server를 의미합니다.

git remote add dokku dokku@<도쿠_서버_주소>:<앱_이름>

이제 git를 통해 업로드를 해보도록 하겠습니다.

 

12

 

 

이제 업로드가 된줄..알았지만 Invalid namespace name (app) 이라는 메세지와 함께 업로드가 거부됩니다. 이유는 dokku의 진짜 실체인 docker버전 때문입니다. docker버전이 업데이트 되면서 최소 4자 이상, 30자 이내의 이름만 사용할수 있게 되기 때문에 app이란 container를 만들수가 없게 됩니다.

 

https://github.com/progrium/dokku/issues/533

해당 경로로 들어가게 되면 이러한 이슈에 대한 해결책이 나와있습니다. 여기서는 docker를 다운그래이드 하도록 하겠습니다.

sudo apt-get remove --purge lxc-docker
sudo apt-get install lxc-docker-0.9.0

위 두명령어를 통해 현재 버전의 docker를 지우고 0.9.0버전의 docker를 설치합니다.

다음으로 아까 실패했던 배포를 다시 시도해 보도록 하겠습니다.

13

 

보는 바와 같이 업로드후 디플로이까지 성공적으로 마쳤습니다.

이제 커맨드보단 우리가 보기 편한 SourceTree를 통해 GUI git를 이용해 보도록 하겠습니다.

위 이미지를 보면 dokku@rankting.com:test 와같은 이름으로 git의 주소가나와있습니다.

해당 주소를 통해 소스트리에서 clone시키면 됩니다.

 

14

이제 기존의 폴더 대신 소스트리에 연결된 워킹카피를 이용하시면됩니다.

다시 ubuntu서버로 돌아와서 다음과 같이 입력해서 실제 container가 잘만들어지고 실행되는지 확인해봅니다.

15

 

보면 49153 -> 5000 으로 리다이렉트 되고 있습니다.

즉 실제 test의 node어플리케이션은 49153포트를 가진다는 것을 알수 있습니다. (맨 앞에는  nginx가 80포트로 자리잡고 해당 서브도메인에 맞도록 라디이렉트 시켜주고 있습니다. 즉 프록시의 역할을 하고 있습니다.)

이제 접속을 시도해 보지만 접속이 되지 않습니다. (현재 노드앱은 자체 mongodb, redis서버의 주소로 접속을 시도하고 있는 앱입니다.)

16

 

따라서 help를 확인해서 logs라는 명령어를 알아낼수 있습니다.

이제 log를 확인해서 어떤 문제가 있는지 보도록 하겠습니다.

 

17

역시나 몽고디비 접속이 되지않고 있습니다.

다음 포스팅에선 dokku plugin을 통해 mongodb와 redis를 연결시켜 보도록 하겠습니다.

Standard