로컬에서 코드를 수정 후 git push 시 GitHub이 GitHub Actions을 시켜 EC2 서버에 자동으로 배포한다
더 이상 SSH로 접속해서 git pull, docker compose up 같은 명령어를 직접 칠 필요가 없다
1단계: EC2 서버에 접속할 비밀 정보 등록 (GitHub Secrets)
Actions Runner가 EC2 서버에 SSH로 접속할 수 있도록 비밀번호와 같은 접속 정보를 안전하게 등록한다
1. GitHub 프로젝트 저장소로 이동
2. [Settings] > [Secrets and variables] > [Actions] 메뉴로 이동
3. [New repository secret] 버튼을 클릭하여 아래 3개의 비밀 정보를 차례대로 등록
4.
(1) HOST (서버 주소)
- Name: HOST
- Secret: 18.176.190.123 (EC2 서버의 탄력적 IP 주소)
(2) USERNAME (서버 접속 계정)
- Name: USERNAME
- Secret: ubuntu
(3) SSH_PRIVATE_KEY (서버 비밀키)
- Name: SSH_PRIVATE_KEY
- Secret: 로컬 PC에 저장된 shop-key-new.pem 파일을 메모장으로 열어서, -----BEGIN RSA PRIVATE KEY----- 부터 -----END RSA PRIVATE KEY----- 까지 모든 내용을 그대로 복사하여 붙여넣기.
2단계: 자동 배포 시나리오 파일 작성 (deploy.yml)
Actions Runner에게 시킬 일의 순서를 적은 '시나리오 파일'(Workflow file)을 작성한다
(1) 로컬 PC의 shop 프로젝트 폴더 최상단에 .github 라는 폴더 생성
(2) 그 .github 폴더 안에 workflows 라는 폴더 생성
(3) workflows 폴더 안에 deploy.yml 이라는 파일을 만들고, 아래 내용을 그대로 복사해서 붙여넣기
# deploy.yml
name: Deploy to AWS EC2
# 이 시나리오가 언제 실행될지 정의합니다: main 브랜치에 push 이벤트가 발생했을 때
on:
push:
branches:
- main
# 실행될 작업들을 정의합니다.
jobs:
deploy:
# 작업이 실행될 가상 환경을 정의합니다.
runs-on: ubuntu-latest
# 작업의 단계들을 정의합니다.
steps:
# 1. GitHub 저장소의 코드를 가상 환경으로 내려받습니다.
- name: Checkout code
uses: actions/checkout@v3
# 2. SSH로 EC2에 접속해서 배포 스크립트를 실행합니다.
- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }} # 1단계에서 등록한 HOST 비밀키
username: ${{ secrets.USERNAME }} # 1단계에서 등록한 USERNAME 비밀키
key: ${{ secrets.SSH_PRIVATE_KEY }} # 1단계에서 등록한 SSH_PRIVATE_KEY 비밀키
script: |
cd ~/shop
git fetch origin
git reset --hard origin/main
docker compose down
docker compose up -d --build
docker image prune -f
script 부분이 GitHub 로봇이 EC2 서버에 접속해서 실행할 명령어
docker image prune -f는 배포 후 남는 옛날 버전의 이미지를 자동으로 삭제해주는 정리 명령어
'Web Project > shop' 카테고리의 다른 글
| WebSocket으로 실시간 양방향 연결 (서버와 프론트 연결) (0) | 2025.09.30 |
|---|---|
| Docker 배포 후 로컬 개발 환경 다시 구축 (0) | 2025.09.27 |
| 내 PC의 GUI 툴에서 EC2 내부 DB에 원격 접속 (0) | 2025.09.04 |
| Spring Boot + React 풀스택 프로젝트 AWS EC2 배포 (0) | 2025.09.04 |
| Spring Boot + React + Nginx 풀스택 프로젝트 Docker 배포 (0) | 2025.09.01 |