당신은 멋쟁이, 우리는 장고쟁이~

0%

TodoList 31편 - Docker를 이용하여 EC2에 배포

현재까지 배포를 위해 진행한 순서는,

  1. AWS EC2 생성
  2. AWS RDS 생성 - PostgreSQL 적용
  3. AWS S3 생성 및 적용
  4. AWS S3 정적 이미지와 CSS파일 적용
  5. Docker 설치
  6. Dockerfile 작성후 이미지 생성
  7. 생성된 이미지를 DockerHub 에 Push
  8. Docker 를 이용하여 EC2 배포하기


지난 포스팅에서, 로컬에서 생성한 Docker 를 실행하여, 서버가 잘 작동하는것을 확인 하였습니다.

이제 EC2 에다가, 생성하였던 Docker 를 이용하여, 서버를 실행 시켜 보는 작업을 진행합니다.



EC2에 배포를 하려면,

EC2에 접속하여, EC2 터미널에서 생성한 Docker 를 실행시키면 됩니다.



정확히 이야기하면, 아래 단계들을 거쳐야 하는데.


이 단계들을 명령어화 하여 진행해 보면 됩니다.


  1. EC2에 접속, 서버 초기 설정을 해줍
  2. 로컬에서 pip freeze > requirements.txt 를 실행, requirements.txt 를 갱신
  3. 로컬에서 Dokerfile 을 이용하여, Docker 이미지 빌드
  4. 로컬에서 Docker image tag 지정
  5. 로컬에서 DockerHub 로 docker push
  6. EC2 에서, DockerHub 에 push 된 이미지 pull
  7. EC2 에서, pull 한 Docker 이미지를 실행하기

이전 포스팅에서 생성한 Docker 이미지는,

자동으로 python manage.py runserver 를 실행해 주므로.

Docker 이미지를 실행 시키는것만으로도 runserver 를 실행한 상태로 유지해 줍니다.


1. EC2에 접속, 서버 초기 설정


터미널에서, EC2 에 접속합니다. 접속하여서, 기본 세팅을 해줍니다.

1
2
3
4
5
6
7
ssh -i ~/.ssh/newtodolist.pem ubuntu@52.79.175.188
*** System restart required ***
Last login: Sat May 23 13:06:22 2020 from 49.194.199.4
ubuntu@ip-172-31-35-66:~$ sudo apt update && sudo DEBIAN_FRONTEND=noninteractive apt dist-upgrade -y && apt -y autoremove

# Docker 도 설치해 줍니다.
ubuntu@ip-172-31-35-66:~$ sudo apt -y install docker.io

2. 로컬 컴퓨터 터미널에서 requiremnts.txt 갱신


1
2
~/mini_projects   master ●  
"$HOME"/.pyenv/versions/3.8.0/envs/to-do-list/bin/pip freeze > "$HOME"/mini_projects/todolist/requirements.txt

3. 로컬에서 Dockerfile 을 이용, Docker 이미지 빌드


1
docker build -t todolist ~/mini_projects/todolist

todolist 라는 이미지를, ~/mini_projects/todolist 경로에 있는 Dockerfile 을 이용하여 생성.


4. 로컬에서 docker image tag 지정


1
docker tag todolist:latest headfat1218/todolist:latest

todolist:latest 를 테그로 지정


5. 로컬에서 DockerHub 로 docker push


1
docker push headfat1218/todolist:latest

headfat1218/todolist:latest 로 테그된 이미지를 DockerHub 로 푸쉬

6. EC2 에서, DockerHub 에 push 된 이미지 pull


1
ubuntu@ip-172-31-35-66:~$ sudo docker pull headfat1218/todolist:latest

7. EC2 에서, Pull 한 이미지를 실행하기


1
sudo docker run --rm -it -p 80:8000 --name todolist headfat1218/todolist:latest

이미지를 실행하면, 이미지가 빌드된 대로,


python manage.py makemigrations를 알아서 해주고

python manage.py migrate 도 알아서 해주고,


python manage.py runserver 도 알아서 해줍니다.



이제, EC2 인스턴스에서 RUNSERVER 를 실행하고 있으니까

브라우저에서, 해당 EC2 인스턴스의 퍼블릭 IP 로 접속해 봅니다.

퍼블릭 IP 로 접속을 하면, 브라우저에서, 현재까지 개발한 Django 프로젝트가 돌아가는것을 확인할수 있을겁니다.