From bfd879c2e5e029a87bdfd26795b86661c5509c74 Mon Sep 17 00:00:00 2001 From: jucheolkang Date: Sat, 1 Mar 2025 00:51:03 +0900 Subject: [PATCH] =?UTF-8?q?build=20:=20=EB=8F=84=EC=BB=A4=20=ED=97=88?= =?UTF-8?q?=EB=B8=8C=20=EB=A0=88=ED=8F=AC=EC=A7=80=ED=86=A0=EB=A6=AC=20loc?= =?UTF-8?q?al=20&=20aws=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20push=20/=20env=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20ec2=20=EC=A0=84=EC=86=A1=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 63 ++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index dca7e04a..217d1890 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - GUTTOK-92 pull_request: @@ -51,7 +52,7 @@ jobs: build-and-push: runs-on: ubuntu-latest needs: test - if: github.ref == 'refs/heads/main' + #if: github.ref == 'refs/heads/main' steps: - name: Checkout repository @@ -86,13 +87,63 @@ jobs: DOCKER_TZ=${{ secrets.DOCKER_TZ }} EOF - - name: Build Docker Image + - name: Build Local Docker Image run: | - docker build -t guttok_app:latest . + docker build -f docker/Dockerfile.local -t guttok_app:local . - - name: Tag and Push to Docker Hub + - name: Build AWS Docker Image + run: | + docker build -f docker/Dockerfile.aws -t guttok_app:aws . + + - name: Tag and Push Local Image to Docker Hub run: | echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin - export IMAGE_NAME="${{ secrets.DOCKERHUB_USERNAME }}/guttok_app:latest" - docker tag guttok_app:latest $IMAGE_NAME + export IMAGE_NAME="${{ secrets.DOCKERHUB_USERNAME }}/guttok_app:latest-local" + docker tag guttok_app:local $IMAGE_NAME docker push $IMAGE_NAME + + - name: Tag and Push AWS Image to Docker Hub + run: | + echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin + export IMAGE_NAME="${{ secrets.DOCKERHUB_USERNAME }}/guttok_app:latest-aws" + docker tag guttok_app:aws $IMAGE_NAME + docker push $IMAGE_NAME + + deploy: + runs-on: ubuntu-latest + needs: build-and-push + #if: github.ref == 'refs/heads/main' + + steps: + - name: Set up SSH key + run: | + echo "${{ secrets.EC2_SSH_KEY }}" > private_key.pem + chmod 600 private_key.pem + + - name: Transfer .env file to EC2 + run: | + scp -i private_key.pem .env ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:/home/${{ secrets.EC2_USER }}/guttok_app/.env + + - name: Deploy to AWS EC2 + uses: appleboy/ssh-action@v0.1.10 + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + script: | + echo "Setting permissions for .env file..." + chmod 600 /home/${{ secrets.EC2_USER }}/guttok_app/.env + + echo "Pulling latest AWS Docker image..." + docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}" + docker pull ${{ secrets.DOCKERHUB_USERNAME }}/guttok_app:latest-aws + + echo "Stopping and removing old container..." + docker stop guttok_app || true + docker rm guttok_app || true + + echo "Running new container..." + docker run -d --name guttok_app \ + --env-file /home/${{ secrets.EC2_USER }}/guttok_app/.env \ + -p 8080:8080 \ + ${{ secrets.DOCKERHUB_USERNAME }}/guttok_app:latest-aws