4aebfaf049
- .gitignore 추가: node_modules, dist, .env 파일을 추적에서 해제 (로컬 파일은 유지) - .env.example 템플릿 추가 (실제 값은 서버 .env / Gitea Secrets로 관리) - backend Dockerfile을 멀티스테이지로 전환: 이미지 빌드 내에서 npm ci + build.js 실행 - backend/frontend .dockerignore 추가 - .gitea/workflows/deploy.yml 추가: main push 시 배포 서버 러너가 compose build + up Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
37 lines
1.2 KiB
YAML
37 lines
1.2 KiB
YAML
# main 브랜치에 push 되면 배포 서버의 러너가 이미지를 빌드하고 컨테이너를 재기동합니다.
|
|
#
|
|
# 사전 준비 (배포 서버에서 1회):
|
|
# 1. Gitea 관리자 설정에서 Actions 활성화
|
|
# 2. act_runner를 배포 서버에 설치하고, host 모드 라벨 "deploy"로 등록
|
|
# (config.yml 의 labels 에 "deploy:host" 추가 후 register)
|
|
# 3. 저장소 Settings > Actions > Secrets 에 등록:
|
|
# - ENV_FILE : 루트 .env 전체 내용 (DB 비밀번호, JWT 시크릿 등)
|
|
# - FRONTEND_ENV_FILE : frontend/.env.production 전체 내용 (VITE_API_BASE_URL 등)
|
|
|
|
name: Deploy
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: deploy
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Create env files from secrets
|
|
run: |
|
|
printf '%s\n' "${{ secrets.ENV_FILE }}" > .env
|
|
printf '%s\n' "${{ secrets.FRONTEND_ENV_FILE }}" > frontend/.env.production
|
|
|
|
- name: Build images
|
|
run: docker compose build backend frontend
|
|
|
|
- name: Restart containers
|
|
run: docker compose up -d
|
|
|
|
- name: Prune dangling images
|
|
run: docker image prune -f
|