-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
name: deploy
on:
push:
branches:
- "main"
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# 1. GitHub 리포 체크아웃
- name: Checkout
uses: actions/checkout@v4
# 2. QEMU, Buildx 세팅 (멀티 아키텍처 빌드 대비)
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# 3. Docker Hub 로그인
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# 4. Spring Boot 이미지 빌드 & 푸시
- name: Build & Push Spring Boot Image
uses: docker/build-push-action@v6
with:
context: ./springboot-app3
file: ./springboot-app3/Dockerfile
push: true
tags: jungwonalicia/springboot3-web3:latest
platforms: linux/amd64
# 5. 서버 배포 경로 변수 설정
- name: Set deploy variables
id: vars
run: |
echo "DEPLOY_DIR=~/springboot3/springboot3-web3" >> $GITHUB_OUTPUT
# 6. SSH로 EC2 접속 → docker compose 배포
- name: Deploy via SSH (compose up)
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: ${{ secrets.EC2_PORT || 22 }}
script: |
set -e
cd ~/springboot3
# (Docker Hub가 비공개 레포일 때만 필요)
if [ -n "${{ secrets.DOCKERHUB_USERNAME }}" ] && [ -n "${{ secrets.DOCKERHUB_TOKEN }}" ]; then
echo "Docker Hub login..."
echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
fi
# 최신 이미지 pull 및 기동
docker compose pull
docker compose up -d
# 상태 확인
docker compose ps
# 로그 확인 필요 시:
# docker compose logs --tail=100 --no-color
Reactions are currently unavailable