GitHub Action으로 AWS EC2에 빌드된 프로젝트 배포

싱판다·2023년 8월 20일
0

이미지로 배포하는 것이 성공했던 날, 구성이 바꼈다.
비교적 많은 일들이 있었지만, 최종적으로는 내가 올린 웹서버에 두 가지 프로젝트를 올려 멀티 호스팅을 해주어야 했다.

지금 구조는 매번 main에 푸시할 때마다 프로젝트를 포함한 웹서버 도커 이미지를 다시 만들어 배포하는 방식이다.
한 가지 프로젝트만 수정해도 다시 이미지를 만들어 배포한다면 너무 비효율적이다.
그래서, 호스트 서버의 특정 경로에 빌드된 프로젝트를 배포하고, 해당 특정 경로를 마운트한 도커 컨테이너 실행하는 방법을 사용했다.
멀티 호스팅을 설정한 설정 파일은 호스트 서버에 두고, 이미지를 다시 만들때 복사해 가져가도록 했다.

그래서 최종적으로 이전 워크플로우에서 변경할 부분은 다음과 같다.

  1. 도커 이미지로 만들어 DockerHub에 올리던 부분 삭제하고 프로젝트를 해당 환경에서 바로 빌드한다.
      - name: Check out code
        uses: actions/checkout@v3

      - name: Install Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Install pnpm
        uses: pnpm/action-setup@v2
        id: pnpm-install
        with:
          version: 8
          run_install: false

      - name: Install typescript
        run: pnpm install typescript

      - name: Get pnpm store directory
        id: pnpm-cache
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
      - name: Setup pnpm cache
        uses: actions/cache@v3
        with:
          path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-
      - name: Build vite app
        run: pnpm build
  1. ssh action으로 DockerHub에서 이미지를 내려받아 실행하는 부분을 scp로 빌드한 프로젝트를 복사해 특정 경로로 배포하기
    요건 다행히 ssh action과 같이 scp action도 있었다. 쉽게 클리어했다.
      - name: executing remote ssh commands using key
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ${{ secrets.EC2_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: ${{ secrets.EC2_PORT }}
          source: ./*
          target: /target_dir
profile
뭐든 많이 배우고 싶다

0개의 댓글

관련 채용 정보