✔️ AWS
✔️ Docker Compose 통해 컨테이너 관리

1️⃣ AWS EC2 인스턴스 생성

2️⃣ 터미널에서 AWS 키페어 파일 실행 권한 설정
chmod 400 test-server.pem
1️⃣ EC2 인스턴스에 접속
ssh -i test-server.pm ec2-user@[퍼블릭 IPv4 DNS]

2️⃣ jdk 설치
sudo yum install -y java-17-amazon-corretto-devel
3️⃣ Docker, Docker Compose 설치
sudo yum install docker
# Docker 서비스 시작
sudo systemctl start docker
# Docker 서비스 작동 상태 확인
sudo systemctl status docker
# Docker 서비스를 운영체제 부팅시 자동 시작하도록 설정
sudo systemctl enable docker
# docker 명령어를 sudo 없이 사용하기 위해 계정을 docker 그룹에 소속 (계정 재접속 필요)
sudo usermod -aG docker ec2-user
# docker-compose 설치
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 권한 부여
sudo chmod +x /usr/local/bin/docker-compose


1️⃣ 새로운 Repository 생성
2️⃣ AWS EC2에서 다운로드한 Key Pair 파일 & 퍼블릭 IPv4 DNS 등록
- Settings → Secrets and variables → Actions에서 다음과 같이 설정:
- SSH_KEY: Key Pair 파일
- SSH_HOST: 퍼블릭 IPv4 주소



name: Deploy
on:
workflow_dispatch:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'adopt'
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: gradlew bootJar
run: ./gradlew bootJar
- name: copy jar to server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ec2-user
key: ${{ secrets.SSH_KEY }}
port: 22
source: "./build/libs/*.jar"
target: "~"
strip_components: 2
- name: SSH Commands
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.SSH_HOST }}
username: ec2-user
key: ${{ secrets.SSH_KEY }}
port: 22
script_stop: true
script: |
sudo yum update -y && sudo yum install -y java-21-amazon-corretto
for pid in $(pgrep java); do
if ps -p $pid -o args= | grep -q 'java -jar'; then
echo "Java process with 'java -jar' found (PID: $pid). Terminating..."
kill -9 $pid
fi
done
echo "nohup java -jar ~/*.jar > ~/app.log 2>&1 &" | at now
git add .
git commit -m "initial commit"
git push -u origin main
bootJar 실행build/libs 디렉토리 아래에 cicd-aws-0.0.1-SNAPSHOT.jar 생성 후 이를 서버로 복사
1️⃣ jar 파일 실행하여 Spring 앱 실행

2️⃣ 해당 인스턴스에 연결된 보안그룹에서 8080 포트 열기

3️⃣ 앱 실행

출처 : [TeamSparta]