From f75a81b6187df865efa690b806e63afad8fa8e37 Mon Sep 17 00:00:00 2001 From: chan Date: Fri, 30 Jan 2026 22:49:31 +0900 Subject: [PATCH] =?UTF-8?q?chore:docker=20=EB=B0=B0=ED=8F=AC=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=ED=99=94=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd.yml | 34 +++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 43 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..4cac76d --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,34 @@ +name: Deploy to EC2 + +on: + workflow_run: + workflows: ["Build and Push to Docker Hub"] + types: + - completed + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + environment: Pinhouse_env + if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} + + steps: + - name: Deploy to EC2 via SSH + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + script: | + set -e + + docker pull ${{ secrets.DOCKER_USERNAME }}/pinhouse:latest + docker rm -f pinhouse || true + docker run -d \ + --name pinhouse \ + --restart unless-stopped \ + -p 3000:3000 \ + ${{ secrets.DOCKER_USERNAME }}/pinhouse:latest + + diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1064413 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,43 @@ +name: Build and Push to Docker Hub + +on: + push: + branches: + - main + +jobs: + build-and-push: + runs-on: ubuntu-latest + environment: Pinhouse_env + + steps: + # 1 소스 체크아웃 + - name: Checkout code + uses: actions/checkout@v4 + + # 2 Docker Buildx + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # 3 Docker Hub 로그인 + - name: Login to Docker Hub (Access Token) + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_ACCESS_TOKEN }} + + # 4 Frontend (Next.js) 이미지 빌드 & 푸시 + - name: Build and push frontend image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Docker-pinhouse-file + push: true + tags: | + ${{ secrets.DOCKER_USERNAME }}/pinhouse:latest + ${{ secrets.DOCKER_USERNAME }}/pinhouse:${{ github.sha }} + build-args: | + NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }} + NEXT_PUBLIC_OAUTH2=${{ secrets.NEXT_PUBLIC_OAUTH2 }} + cache-from: type=gha + cache-to: type=gha,mode=max