1. (GCP편과 동일) 환경변수 설정
•
GCP편을 보고 와주세요! 내용이 완벽히 같습니다.
2. (GCP편과 동일) CI 구축
•
GCP편을 보고 와주세요! 내용이 완벽히 같습니다.
3. CD 구축
[1] (GCP편과 동일) docker image 생성하고 docker hub에 푸시하는 작업 자동화
•
GCP편을 보고 와주세요! 내용이 완벽히 같습니다.
[2] AWS EC2 instance 환경에서 해당 이미지 pull 받아와 배포하는 작업 자동화
주의할 점!
•
도커 허브 리포지토리는 꼭 Private으로 생성해주세요!
•
만일 public으로 생성하고 싶으시다면, github secret을 사용하지 않고 docker secret을 적용해줘야 하는 데 해당 블로그는 그 부분 내용까지 포함하고 있지 않습니다.
1) deploy.yml 파일에 아래 코드를 추가해줍니다.
# Deploy
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: vm 인스턴스 외부ip
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
envs: GITHUB_SHA
script: |
sudo docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
sudo docker build -t 리포지토리이름 .
sudo docker tag 리포지토리이름 유저네임/리포지토리이름:${GITHUB_SHA::7}
sudo docker push 유저네임/리포지토리이름:${GITHUB_SHA::7}
sudo docker-compose up -d
YAML
복사
2) ppk로 openSSHkey 파일 생성 (혹은 pem 파일 생성)
•
PuTTYgen에서 Load 클릭해서 기존에 aws ec2에 putty로 접속할 때 썼던 ppk 파일을 선택합니다.
◦
혹시, ppk 파일이 없다면, aws > ec2 > 네트워크 및 보안 > 키 페어 > 키 페어 생성에서 ppk 파일을 생성해주세요.
•
Key passphrase에 원하는 비밀번호를 입력해주세요.
•
Conversions 탭을 눌러 ExportOpenSSHkey를 클릭해주세요.
•
생성된 openSSHkey 파일을 원하는 경로에 저장해주세요.
3) github에 환경변수 등록
•
SSH_PRIVATE_KEY라는 이름으로 아까 로컬에 저장해둔 openSSHkey(혹은 pem) 파일의 내용을 그대로 복사해와 붙여 넣어줍니다. (중요,,,,)
•
SSH_USERNAME라는 이름으로 아까 Key comment 내용을 넣어줍니다. ex) ubuntu
◦
putty로 접속하실 때 ubuntu@public-ip로 접속하셨다면 @ 앞에 내용인 ubuntu을 넣어줍니다. 다른 것이었다면 다른 것으로 넣어주세요.
•
SSH_PASSPHRASE라는 이름으로 Key passphrase 내용을 넣어줍니다.(pem은 패스)
4) 커밋을 날려 제대로 배포되는지 확인합니다.
이번엔 3번째만에 성공했네요!