Skip to content

chore: docker-compose.yaml 수정 #17

chore: docker-compose.yaml 수정

chore: docker-compose.yaml 수정 #17

Workflow file for this run

name: Docker CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- develop
jobs:
build-and-push:
name: 도커 이미지화
runs-on: ubuntu-latest
steps:
- name: 리포지토리 코드 체크아웃
uses: actions/checkout@v3
- name: Docker Buildx 설정
uses: docker/setup-buildx-action@v2
- name: Docker Hub 로그인
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Docker 이미지 빌드 및 푸시
uses: docker/build-push-action@v4
with:
context: ./
file: ./Dockerfile.product
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/nestjs-app:${{ github.sha }}
deploy:
name: 서버 배포
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: 서버 배포 및 상태 확인
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /home/ubuntu
echo "${{ secrets.ALL_ENV_VARS }}" | jq -r 'to_entries | .[] | "\(.key)=\(.value)"' > /home/ubuntu/.env
echo "=== .env 파일 내용 확인 ==="
cat /home/ubuntu/.env || echo "Failed to create .env file"
echo "=== 기존 Docker Compose 컨테이너 종료 ==="
docker-compose --env-file /home/ubuntu/.env down
echo "=== 최신 Docker 이미지 Pull ==="
docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/nestjs-app:latest
echo "=== Docker Compose 컨테이너 실행 ==="
docker-compose --env-file /home/ubuntu/.env up -d --remove-orphans
echo "=== 사용하지 않는 Docker 이미지 정리 ==="
docker image prune -f
echo "=== Docker 컨테이너 상태 ==="
sudo docker-compose ps