Docker를 사용한 ec2 배포
원래 사용하던 블로그 - https://yeonnan.hashnode.dev/docker-ec2?source=more_series_bottom_blogs
docker를 사용한 ec2 배포
docker-compose.yml, dockerfile, .env 파일이 로컬에 존재하며, ec2 인스턴스는 이미 실행 중이어야 한다. 0. ssh로 ec2에 접속 ssh -i <.pem> ubuntu@<ec2-ip> Unprotected Private Key File 경고 chmod 400 {.pem 파일 경로} sud
yeonnan.hashnode.dev
docker-compose.yml, dockerfile, .env 파일이 로컬에 존재하며,
ec2 인스턴스는 이미 실행 중이어야 한다.
0. ssh로 ec2에 접속
ssh -i <.pem> ubuntu@<ec2-ip>
- Unprotected Private Key File 경고 chmod 400 {.pem 파일 경로}
- sudo 권한 확인 후 docker 설치
apt-get update apt-get install sudo
1. docker, docker compose 설치
sudo apt update
sudo apt install docker.io
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
설치 확인
- docker --version
- docker-compose --version
2. docker 시작 및 자동 실행 설정
sudo systemctl start docker
sudo systemctl enable docker
3. git clone
clone한 파일의 프로젝트 루트에 dockerfile, docker-compose.yml이 있어야 한다.
git clone <repository 주소>
git clone후 프로젝트 디렉토리로 이동 cd <프로젝트 폴더>
4. .env 파일 ec2로 복사
.env 파일을 로컬에서 ec2로 복사해줘야 한다.
- 해당 명령어는 scp 명령을 ec2 터미널에서 실행하는 것이 아닌,
로컬 컴퓨터 터미널에서 실행해야 한다.
scp -i <pem키 경로> <.env 파일경로> ubuntu@<ec2 퍼블릭ip 주소>:/home/ubuntu/<프로젝트 폴더>/
5. python 패키지 설치 <스킵 가능>
docker-compose 환경에서는 패키지를 docker 이미지 내에 설치하기 때문에,
docker- compose 빌드 시에는 스킵 가능
- 스킵 시에는 바로 6번, 7번 실행
sudo pip install -r requirements.txt
6. docker 이미지 빌드
dockerfile이 있는 위치에서 docker 이미지 빌드
여기서 app명은 내가 정하고 싶은 걸로 하면 된다. (이미지 이름은 소문자로만 작성되어야 한다.)
sudo docker-compose build
6-1. docker 이미지가 이미 있다면
sudo docker images
7. 컨테이너 실행
sudo docker-compose up
- 실행중인 컨테이너 확인 sudo docker ps
- docker 로그 확인 sudo docker-compose logs
- docker 컨테이너 중지 sudo docker-compose down
8. 마이그레이션 적용
django를 사용 중이라면, 마이그레이션 적용 필요
→ 컨테이너가 정상적으로 실행되면, 컨테이너 내부에서 마이그레이션 적용
sudo docker-compose exec web python manage.py migrate
9. aws ec2 관리 콘솔에서 보안그룹 설정으로 들어가 TCP 80 포트를 추가
10. 웹사이트 접속
http://<EC2 IP>