Feat: 도커파일 수정 #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Push Docker Image and Deploy | |
# main 브랜치에 push or PR이 오면 실행 | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
# 도커 이미지 빌드 및 푸시 | |
build-and-push: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# secret.py 파일 생성 | |
- name: create secret.py | |
run: | | |
echo "${{ secrets.SECRET_KEY }}" > secret.py | |
# 도커 이미지 빌드 | |
- name: docker build | |
run: | | |
docker build -t ${{ secrets.DOCKER_IMAGE_NAME }}:latest . # 도커 빌드 | |
# 도커 로그인 | |
- name: docker Login | |
uses: docker/[email protected] | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
# 도커 이미지 push | |
- name: push docker images | |
run: | | |
docker push ${{ secrets.DOCKER_IMAGE_NAME }}:latest | |
# 도커 이미지 EC2 인스턴스에 배포 | |
deploy-to-ec2: | |
needs: build-and-push | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Deploy to EC2 | |
uses: appleboy/ssh-action@master | |
with: | |
host: ${{ secrets.EC2_HOST }} # EC2 IP 주소 | |
username: ${{ secrets.EC2_USER }} # EC2 사용자 | |
key: ${{ secrets.PRIVATE_KEY }} # pem 키 | |
# 기존 컨테이너 중지 | |
script: | | |
CONTAINER_ID=$(sudo docker ps -aq --filter "name=golang-ai") | |
if [ ! -z "$CONTAINER_ID" ]; then | |
sudo docker stop $CONTAINER_ID || true | |
sudo docker rm -f $CONTAINER_ID || true | |
fi | |
# 최신 도커 이미지로 컨테이너 실행 | |
sudo docker pull ${{ secrets.DOCKER_IMAGE_NAME }}:latest # 도커 최신 이미지 다운로드 | |
docker run --name golang-ai -d -v /home/ubuntu/files:/home/ubuntu/files -p 8000:8000 ${{ secrets.DOCKER_IMAGE_NAME }}:latest | |
sudo docker image prune -f # 구버전의 도커 이미지 제거 |