AWS에서 CI/CD 기본 세팅은 아래의 사이트를 참고하였다.
local에서는 docker가 깔려있지만 ubuntu에는 깔려있지 않다.
> ubuntu --version
Ubuntu 24.04.1 LTS
찾아보니 docker.io가 LTS 배포판에 맞춰 업데이트가 가능하다고 한다.
> sudo apt install docker.io
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
err: sudo: ./gradlew: command not found
```bash
> chmod +x gradlew
```
권한이 없어서 그렇단다.
BUILD SUCCESSFUL
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 생성
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