node.js express 서버 docker 와 github actions CI/CD 로 heroku에 올리기

박정훈·2022년 5월 20일
0

Docker

목록 보기
3/6

앞서 기본 node.js 서버를 CI 테스트 해보았다. 이제 엘리스 1차 프로젝트였던 kruger사이트 서버를 heroku에 배포하려고 한다.

heroku app을 만들어주고..
root에 .github/workflows/이름.yml

이번에도 docker image는 dockerhub가 아닌 github packages에 올렸다.

name: Publish Docker image
# workflow가 trigger될 이벤트를 명시한다. push하면 실행!
on:
  push:
    branches: main
  pull_request:
    branches: main
# workflow에서 실행할 job
jobs:
  build-and-push-image:
    # job이 돌아갈 환경을 명시한다.
    runs-on: ubuntu-latest
    # 하나의 job에서 실행할 step 명시한다.
    steps:
      - name: Checkout repository
        # uses는 다른 오픈소스 커뮤니티에 있는 actions를 가지고 와서 실행하라고 job에게 알려준다.
        # checkout@v3는 레파지토리 환경을 runner로 복사한다.
        uses: actions/checkout@v3
      # Docker Buildx 설정을 위한 GitHub 작업이다.
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v2
      # Docker 레지스트리에 대해 로그인하기 위한 GitHub 작업이다.
      - name: Log in to the Container registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.TOKEN }}
      # Buildx 로 Docker 이미지를 빌드하고 푸시하는 GitHub 작업이다.
      - name: Build and push Docker image
        uses: docker/build-push-action@v3
        with:
          context: .
          file: ./Dockerfile
          push: true
          tags: ghcr.io/${{ secrets.DOCKER_HUB_USERNAME }}/kruger-back:latest
  # heroku 배포
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: akhileshns/heroku-deploy@v3.12.12
        with:
          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
          heroku_app_name: 'git-cicd-kruger'
          heroku_email: ${{secrets.HEROKU_EMAIL}}
          env_file: '.env'
          usedocker: true

node.js서버를 테스트 해 봤던것과 달라진건... heroku 배포 부분정도 뿐이었다.

아래 깃허브에서 보고 쉽게 했다.
env_file은 폴더에 있는 .env path를 적어주면 된다. 역시 깃허브에 설명되어있다.
HEROKU_API_KEY도 아래 깃허브를 참고하면 방법이 설명 되어있다.
HEROKU_EMAIL은 heroku에 등록되어있는 이메일이다.

marketplace/actions/deploy-to-heroku

profile
그냥 개인적으로 공부한 글들에 불과

0개의 댓글