Skip to content

📝 docs: 리드미 작성 #19

📝 docs: 리드미 작성

📝 docs: 리드미 작성 #19

Workflow file for this run

name: CI/CD with FastAPI
on:
pull_request:
branches: ["main"]
push:
branches: ["main"]
workflow_dispatch:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
IMAGE: ${{ secrets.DOCKER_USERNAME }}/menu-ai
jobs:
docker-build-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build & Push Docker Image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
no-cache: true
tags: |
${{ env.IMAGE }}:latest
${{ env.IMAGE }}:${{ github.sha }}
deploy:
name: Deploy to Server
needs: docker-build-push
runs-on: ubuntu-latest
steps:
- name: Deploy via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.PRIVATE_KEY }}
script: |
docker pull ${{ env.IMAGE }}:latest
docker stop menu-ai || true
docker rm menu-ai || true
docker run -d --name menu-ai \
-p 8000:8000 \
-e OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }} \
-e OPENAI_MODEL=${{ secrets.OPENAI_MODEL }} \
${{ env.IMAGE }}:latest
docker image prune -af || true