현재까지 배포를 위해 진행한 순서는,
- AWS EC2 생성
- AWS RDS 생성 - PostgreSQL 적용
- AWS S3 생성 및 적용
- AWS S3 정적 이미지와 CSS파일 적용
- Docker 설치
- Dockerfile 작성후 이미지 생성
- 생성된 이미지를 DockerHub 에 Push
- Docker 를 이용하여 EC2 배포하기
지난 포스팅에서, 로컬에서 생성한 Docker 를 실행하여, 서버가 잘 작동하는것을 확인 하였습니다.
이제 EC2 에다가, 생성하였던 Docker 를 이용하여, 서버를 실행 시켜 보는 작업을 진행합니다.
EC2에 배포를 하려면,
EC2에 접속하여, EC2 터미널에서 생성한 Docker 를 실행시키면 됩니다.
정확히 이야기하면, 아래 단계들을 거쳐야 하는데.
이 단계들을 명령어화 하여 진행해 보면 됩니다.
- EC2에 접속, 서버 초기 설정을 해줍
- 로컬에서 pip freeze > requirements.txt 를 실행, requirements.txt 를 갱신
- 로컬에서 Dokerfile 을 이용하여, Docker 이미지 빌드
- 로컬에서 Docker image tag 지정
- 로컬에서 DockerHub 로 docker push
- EC2 에서, DockerHub 에 push 된 이미지 pull
- EC2 에서, pull 한 Docker 이미지를 실행하기
이전 포스팅에서 생성한 Docker 이미지는,
자동으로 python manage.py runserver 를 실행해 주므로.
Docker 이미지를 실행 시키는것만으로도 runserver 를 실행한 상태로 유지해 줍니다.
1. EC2에 접속, 서버 초기 설정
터미널에서, EC2 에 접속합니다. 접속하여서, 기본 세팅을 해줍니다.
1 | ssh -i ~/.ssh/newtodolist.pem ubuntu@52.79.175.188 |
2. 로컬 컴퓨터 터미널에서 requiremnts.txt 갱신
1 | ~/mini_projects master ● |
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 프로젝트가 돌아가는것을 확인할수 있을겁니다.