Dockerfile로 CI/CD 구축하여 자동 배포

YeJin Lee·2024년 10월 9일

Spring Boot

목록 보기
9/11

AWS에서 CI/CD 기본 세팅은 아래의 사이트를 참고하였다.

https://velog.io/@ellcoding/Spring-Boot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-CICD-%EA%B5%AC%EC%B6%95

문제상황

  1. local에서는 docker가 깔려있지만 ubuntu에는 깔려있지 않다.

    > ubuntu --version

    Ubuntu 24.04.1 LTS

    찾아보니 docker.io가 LTS 배포판에 맞춰 업데이트가 가능하다고 한다.

    > sudo apt install docker.io
  2. permission denied

    ./gradlew: Permission denied
    err: docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post 
  3. err: sudo: ./gradlew: command not found

     ```bash
    > chmod +x gradlew
    ```
    권한이 없어서 그렇단다.

    BUILD SUCCESSFUL

  4. err: See 'docker build --help'.
    err: Usage: docker build [OPTIONS] PATH | URL | -
    err: Build an image from a Dockerfile
    err: Unable to find image 'dockertestimg:latest' locally
    err: docker: Error response from daemon: pull access denied for dockertestimg, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
    err: See 'docker run --help'.

    > 	Docker Hub에서 repository 생성

deploy.yml

name: Deploy To EC2

on:
  push:
    branches:
      - main


jobs:
  Deploy:
    runs-on: ubuntu-latest
    steps:
      - name: docker hub 로그인
        uses: docker/login-action@v2
        with:
            username: ${{ secrets.DOCKER_ID }}
            password: ${{ secrets.DOCKER_PW }}

      - name: SSH(원격접속)로 EC2에 접속하기
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ${{ secrets.EC2_USERNAME }}
          key: ${{ secrets.EC2_PRIVATE_KEY }}
          scripts_step: true
          script: |
            cd /home/ubuntu/spring-boot
            git pull origin main
            sudo ./gradlew clean build
            sudo fuser -k -n tcp 8080 || true
            # 실행 중인 모든 컨테이너 종료 명령어
            sudo docker stop $(sudo docker ps -aq)
            sudo docker pull ${{ secrets.DOCKER_ID }}/spring-boot-demo:latest
            sudo docker run -d -p 8080:8080 ${{ secrets.DOCKER_ID }}/spring-boot-demo:latest
profile
안녕하세요, 영문과코딩 입니다.

0개의 댓글