diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c0598bf..a0334f8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -10,7 +10,7 @@ jobs: build: runs-on: ubuntu-latest steps: - # 소스 코드를 체크아웃 (클론)합니다. + # 소스 코드를 체크아웃 - name: Checkout source code uses: actions/checkout@v3 @@ -35,47 +35,40 @@ jobs: - name: Build with Gradle run: ./gradlew clean build -x test - # Docker Hub에 로그인합니다. + # Docker Hub에 로그인 - name: Login to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - # Spring Boot 애플리케이션의 Docker 이미지를 빌드하고 Docker Hub에 푸시합니다. + # Spring Boot 애플리케이션의 Docker 이미지를 빌드하고 Docker Hub에 푸시 - name: Build and push Spring Boot app Docker image run: | docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:backend --platform linux/amd64 . docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:backend - # EC2 인스턴스에서 Docker 이미지를 pull하고 애플리케이션을 배포합니다. + # EC2 인스턴스에서 Docker 이미지를 pull하고 애플리케이션을 배포 - name: Deploy at EC2 instance uses: appleboy/ssh-action@master with: - host: ${{ secrets.SSH_HOST }} # 퍼블릭 IPv4 DNS + host: ${{ secrets.SSH_HOST }} username: ubuntu - key: ${{ secrets.SSH_KEY }} # EC2 인스턴스의 PEM 키 - port: ${{ secrets.SSH_PORT }} # 보안 그룹 인바운드 규칙의 SSH 포트 번호 + key: ${{ secrets.SSH_KEY }} + port: ${{ secrets.SSH_PORT }} script: | - # Docker Hub 로그인 docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" -p "${{ secrets.DOCKERHUB_TOKEN }}" - # 컨테이너 이름 설정 CONTAINER_NAME="backend" - # 기존 컨테이너 중단 및 제거 - if [ "$(sudo docker ps -q -f name=$CONTAINER_NAME)" ]; then - sudo docker stop "$CONTAINER_NAME" - sudo docker rm "$CONTAINER_NAME" - fi + sudo docker stop $(sudo docker ps -q) || true - # 사용하지 않는 Docker 이미지 삭제 - sudo docker image prune -f + sudo docker rm $(sudo docker ps -a -q) || true + + sudo docker rmi $(sudo docker images -q) || true - # 최신 이미지 Pull sudo docker pull "${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:backend" - # 새로운 컨테이너 실행 sudo docker run -d \ --name "$CONTAINER_NAME" \ -p 80:8080 \