DevOps/Docker

[Docker] Docker Tutorial (3) : 생성한 이미지 AWS에 배포하기

ooeunz 2019. 12. 9. 19:33
반응형

이번 포스팅에서는 docker hub에 직접 만든 이미지를 push 하고 aws에서 배포해보도록 하겠다. 하지만 그전에 해야 할 일이 있다. 이전 포스팅에서는 내부적으로 8080 포트에서 3000번 포트로 접근하여 로컬에서 컨테이너에 접근할 수 있었다. 하지만 그것은 어디까지나 테스트를 위한 설정이었고, 실제로 AWS에 배포를 한다는 것은 로컬에서만 접근할 수 있는 URI가 아닌, 어디에서든 접근할 수 있는 접근성이 필요하다. 그러기 위해 이 포스팅에서는 pm2를 이용하도록 하겠다.

 

그러기 위해서는 먼저 이전에 만들어주었던 컨테이너들과 이미지를 삭제하고 이미지를 새롭게 빌드해야한다.

docker ps 명령어를 입력해보면 아까 -d (백그라운드로 컨테이너 생성 및 실행)으로 인한 3개의 컨테이너가 돌아가고 있는 것을 알고 있다.

때문에 컨테이너 중지 > 컨테이너 삭제 > 이미지 삭제 순으로 이미지와 컨테이너를 지워주도록 하겠다. 대부분의 설명은 이전 포스팅에서 명령어들과 함께 상세히 포스팅하였기 때문에 여기서는 간략히 실행결과 이미지만으로 대체하도록 하겠다.

 

그런 다음 Dockerfile을 수정해주도록 하겠다.

달라진 내용은 11번 라인에서 pm2를 global로 설치하는 것과, 17번 라인에서 npm start가 아니라 pm2를 runtime으로 실행시켜주는 차이이다.

 

새로 바뀐 Dockerfile을 build 해서 이미지를 만든 후 다음으로 넘어가자.

 


push

터미널에서 도커 로그인을 해준다.

sudo docker login

 

그리고 docker push를 이용해서 이미지를 docker hub에 업로드한다.

// docker push <username>/<repository 이름>:<태그 명>

docker push ooeunz/sample:node

터미널에서 명령 입력

성공적으로 push가 되면 docker hub > Repositories에서 확인할 수 있다.

 


AWS에 배포하기

이제 이미지를 직접 생성하는 방법도 다뤘고 컨테이너도 실행해보았다. 이제 본격적으로 AWS EC2에 Docker image를 배포하도록 하겠다. 그러기에 앞서 배포할 EC2 서버가 필요하므로 만약 EC2 서버가 없다면 아래 URI를 참고하도록 하자.

 

https://ooeunz.tistory.com/35?category=816210

 

[AWS] EC2 서버 사용하기

인스턴스 생성하기 Amazon Elastic Compute Cloud(Amazon EC2)는 AWS의 대표적인 가상 컴퓨팅 환경 중 하나이다. 지금부터 프리티어로 EC2 초기 세팅을 해보도록 하겠다. 먼저 AWS에 가입한 이후(이전 포스팅 참..

ooeunz.tistory.com

 

자, 그럼 위의 URI를 참고해 현재 EC2에 접속해있다는 가정하에 진행하도록 하겠다. 가장 먼저 해야 할 일은 역시 EC2서버에 도커를 설치하는 일이다. 아래의 명령들을 차례대로 입력해보자.

 

ubuntu

curl -fsSL https://get.docker.com/ | sudo sh
sudo usermod -aG docker $USER

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# check (re-login)
docker version
docker-compose version

# reboot
sudo reboot

 

위의 명령어를 복사에서 붙여넣으면 자동으로 도커를 설치하고 잠시후 reboot하게 된다.

마지막 도커의 상태를 확인하는 명령어까지 입력했을 때 아래와 같은 메시지가 출력되면 도커가 정상적으로 설치된 것을 알 수 있다.


pull & run

이번에도 역시 EC2에서 docker login 명령을 통해 로그인을 한 다음, 이번에는 push가 아니라 pull을 통해서 docker hub에 올린 image를 받아오도록 한다.

// 로그인
sudo docker login

// pull
sudo docker pull <username>/<respository 이름>:<tag 명>

 

image를 성공적으로 받아왔다면 이전 포스팅에서 사용해왔던 명령어들을 적절히 조합해서 이미지를 run 시켜보도록 하겠다. 

EC2에 있는 도커 파일에 접속한 모습

 

이로써 Docker를 이용해 AWS에 배포하는 것까지 해보았다. 여기까지만 해도 배포에 관한 많은 부분의 부담을 덜게 되었을 것이다. 다음 포스팅에서는 도커를 이용한 자동 배포와 무중단 서비스에 관해서 다뤄보도록 하겠다.

반응형