git push origin main → GitHub Actions 실행docker compose pull && up -dinit.sql 같은 걸 집어넣기 불편하므로,# 로컬에서 MYSQLdump 생성
mysqldump -h 127.0.0.1 -u root -p ^
--databases devmate ^
--single-transaction --routines --triggers --events ^
--default-character-set=utf8mb4 --set-gtid-purged=OFF --hex-blob ^
--result-file="C:devmate_dump.sql"
# 로컬 -> EC2 업로드
scp -i devmate.pem C:devmate_dump.sql ubuntu@<EC2_IP>:/srv/app/
# EC2에서 복원
sudo apt -y install mysql-client
mysql -h <RDS-ENDPOINT> -P 3306 -u admin -p --default-character-set=utf8mb4 < /srv/app/devmate_dump.sq
# 점검
mysql -h <RDS-ENDPOINT> -u admin -p
# 로컬 PC에서
ssh -i <만든키이름>.pem ubuntu@<ec2 IP>
# 서버 접속 후
sudo apt update && sudo apt -y upgrade
# Docker 권한 부여
sudo usermod -aG docker ubuntu
exit
# 다시 접속해서 적용됨 확인
ssh -i <만든키이름>.pem ubuntu@<ec2 IP>
echo <github PAT> | docker login ghcr.io -u sirius147 --password-stdin
GHCR 로그인 (Personal Access Token write:packages 체크):
echo GH_PAT | docker login ghcr.io -u sirius147 --password-stdin
docker build -t ghcr.io/<계정이름>/devmate-backend:latest .
docker push ghcr.io/<계정이름>/devmate-backend:latest
mkdir -p ~/app && cd ~/app
/srv/app/.env) .env 작성DB_URL=jdbc:mysql://devmate-db.....amazonaws.com:3306/devmate?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8
DB_USERNAME=admin
DB_PASSWORD=....
JWT_SECRET=...
SPRING_PROFILES_ACTIVE=prod
...
docker-compose.yml 작성services:
backend:
image: ghcr.io/<username>/devmate-backend:latest
container_name: devmate-backend
restart: always # 서버 재가동
env_file: .env # env를 사용하는 코
ports:
- "18080:8080" # 포트 포워딩
....
docker compose pull # 이미지 다운로드
docker compose up -d
docker image prune -f # 이전 이미지 삭제
# 상태/로그 확인
docker compose ps
docker compose logs -f backend
.....
→ curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:18080/actuator/health 확인