docs: Git 기반 배포 필요성 및 carmodoo-agent 환경변수 설명 추가
This commit is contained in:
@@ -278,8 +278,10 @@ services:
|
|||||||
- autonet-production-network
|
- autonet-production-network
|
||||||
|
|
||||||
carmodoo-agent:
|
carmodoo-agent:
|
||||||
build: ./carmodoo-agent
|
build: ./agent
|
||||||
container_name: carmodoo-agent
|
container_name: carmodoo-agent
|
||||||
|
volumes:
|
||||||
|
- ./agent/.env:/app/.env:ro
|
||||||
networks:
|
networks:
|
||||||
- autonet-production-network
|
- autonet-production-network
|
||||||
|
|
||||||
@@ -408,7 +410,8 @@ docker compose -f docker-compose.production.yml up -d
|
|||||||
│ │ ├── requirements.txt # psycopg2-binary 포함
|
│ │ ├── requirements.txt # psycopg2-binary 포함
|
||||||
│ │ └── app/
|
│ │ └── app/
|
||||||
│ │ └── config.py # URL 인코딩 적용
|
│ │ └── config.py # URL 인코딩 적용
|
||||||
│ ├── carmodoo-agent/
|
│ ├── agent/
|
||||||
|
│ │ └── .env # Carmodoo 로그인 정보
|
||||||
│ └── docker-compose.production.yml
|
│ └── docker-compose.production.yml
|
||||||
│
|
│
|
||||||
├── releases/ # 롤백용 백업
|
├── releases/ # 롤백용 백업
|
||||||
@@ -424,7 +427,7 @@ docker compose -f docker-compose.production.yml up -d
|
|||||||
|
|
||||||
## 8. 환경변수 설정
|
## 8. 환경변수 설정
|
||||||
|
|
||||||
### 운영 서버 backend/.env 전체
|
### 운영 서버 backend/.env
|
||||||
|
|
||||||
```env
|
```env
|
||||||
# Database (PostgreSQL)
|
# Database (PostgreSQL)
|
||||||
@@ -463,9 +466,105 @@ VERIFICATION_CODE_EXPIRE_MINUTES=10
|
|||||||
EMAIL_VERIFICATION_REQUIRED=True
|
EMAIL_VERIFICATION_REQUIRED=True
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 운영 서버 agent/.env
|
||||||
|
|
||||||
|
```env
|
||||||
|
# Carmodoo 딜러 포탈 로그인 정보
|
||||||
|
CARMODOO_USER_ID=01033315258
|
||||||
|
CARMODOO_PASSWORD=alskfl@1122
|
||||||
|
|
||||||
|
# Backend API 연결 (Docker 네트워크 내부)
|
||||||
|
API_SERVER_URL=http://autonet-backend:8000/api
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ **중요**: carmodoo-agent는 이 환경변수가 없으면 로그인 실패로 계속 재시작됩니다.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 9. 문제 해결
|
## 9. Git 기반 배포가 필요한 이유
|
||||||
|
|
||||||
|
### 9.1 문제 상황 (Git 미사용 시)
|
||||||
|
|
||||||
|
```
|
||||||
|
[서버4 - 로컬 개발] [서버2 - 운영 서버]
|
||||||
|
소스코드 A 소스코드 A
|
||||||
|
│ │
|
||||||
|
│ 직접 수정 → 소스코드 B (예: 번역 수정)
|
||||||
|
│ │
|
||||||
|
└────── docker build ───────────┘
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
소스코드 A로 덮어씀
|
||||||
|
(B 변경사항 사라짐!)
|
||||||
|
```
|
||||||
|
|
||||||
|
**원인**:
|
||||||
|
- 서버2에서 직접 코드를 수정함
|
||||||
|
- 서버4에서 `docker build`를 하면 서버4의 소스코드로 컨테이너가 다시 빌드됨
|
||||||
|
- 서버2에서 수정한 내용이 서버4에는 없으므로 → **변경사항이 사라짐**
|
||||||
|
|
||||||
|
### 9.2 해결 방법 (Git 기반 배포)
|
||||||
|
|
||||||
|
```
|
||||||
|
[서버4 - 로컬 개발] [서버2 - 운영 서버]
|
||||||
|
소스코드 수정
|
||||||
|
│
|
||||||
|
git commit
|
||||||
|
│
|
||||||
|
git push staging ────────────────→ Git Bare Repository
|
||||||
|
│
|
||||||
|
post-receive hook (자동)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
소스코드 복사 + docker build
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
스테이징 컨테이너 실행
|
||||||
|
│
|
||||||
|
검증 후 deploy.sh promote
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
운영 컨테이너 실행
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.3 핵심 원칙
|
||||||
|
|
||||||
|
| 이전 (문제) | 현재 (해결) |
|
||||||
|
|------------|------------|
|
||||||
|
| 서버2에서 직접 수정 | **서버4에서만 수정** |
|
||||||
|
| 수정 후 바로 docker build | git commit → git push |
|
||||||
|
| 변경 이력 없음 | Git으로 버전 관리 |
|
||||||
|
| 롤백 불가 | `deploy.sh rollback`으로 롤백 가능 |
|
||||||
|
|
||||||
|
### 9.4 올바른 배포 워크플로우
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 서버4에서 코드 수정 (로컬 개발)
|
||||||
|
code frontend/src/app/page.tsx
|
||||||
|
|
||||||
|
# 2. 로컬 테스트
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# 3. Git 커밋
|
||||||
|
git add .
|
||||||
|
git commit -m "fix: 번역 수정"
|
||||||
|
|
||||||
|
# 4. 스테이징 배포 (자동 - post-receive hook)
|
||||||
|
git push staging main
|
||||||
|
|
||||||
|
# 5. 스테이징 검증
|
||||||
|
# http://192.168.0.202:3001 (frontend)
|
||||||
|
# http://192.168.0.202:8001/docs (backend)
|
||||||
|
|
||||||
|
# 6. 운영 승격
|
||||||
|
ssh damon@192.168.0.202 "/opt/autonet/scripts/deploy.sh promote"
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ **중요**: 서버2에서 직접 코드를 수정하지 마세요! 모든 변경은 서버4에서 Git을 통해 배포해야 합니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. 문제 해결
|
||||||
|
|
||||||
### PostgreSQL 연결 오류
|
### PostgreSQL 연결 오류
|
||||||
|
|
||||||
@@ -514,9 +613,35 @@ docker compose -f docker-compose.production.yml build backend --no-cache
|
|||||||
NEXT_PUBLIC_API_URL=https://autonetsellcar.com
|
NEXT_PUBLIC_API_URL=https://autonetsellcar.com
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### carmodoo-agent 계속 재시작
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 에러 확인
|
||||||
|
docker logs carmodoo-agent --tail 20
|
||||||
|
|
||||||
|
# 에러: User ID and password are required
|
||||||
|
# 원인: agent/.env 파일 없음 또는 환경변수 미설정
|
||||||
|
|
||||||
|
# 해결:
|
||||||
|
# 1. .env 파일 생성
|
||||||
|
cat > /opt/autonet/production/agent/.env << 'EOF'
|
||||||
|
CARMODOO_USER_ID=01033315258
|
||||||
|
CARMODOO_PASSWORD=alskfl@1122
|
||||||
|
API_SERVER_URL=http://autonet-backend:8000/api
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 2. 컨테이너 재생성 (.env 마운트 적용)
|
||||||
|
docker stop carmodoo-agent && docker rm carmodoo-agent
|
||||||
|
docker run -d --name carmodoo-agent \
|
||||||
|
--restart unless-stopped \
|
||||||
|
--network autonet-production-network \
|
||||||
|
-v /opt/autonet/production/agent/.env:/app/.env:ro \
|
||||||
|
production-carmodoo-agent
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 10. 빠른 참조 명령어
|
## 11. 빠른 참조 명령어
|
||||||
|
|
||||||
```
|
```
|
||||||
╔═══════════════════════════════════════════════════════════════════════════════╗
|
╔═══════════════════════════════════════════════════════════════════════════════╗
|
||||||
@@ -549,7 +674,7 @@ NEXT_PUBLIC_API_URL=https://autonetsellcar.com
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 11. 체크리스트
|
## 12. 체크리스트
|
||||||
|
|
||||||
### 최초 서버 설정
|
### 최초 서버 설정
|
||||||
|
|
||||||
@@ -578,4 +703,4 @@ NEXT_PUBLIC_API_URL=https://autonetsellcar.com
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**최종 업데이트**: 2024-12-30
|
**최종 업데이트**: 2024-12-31
|
||||||
|
|||||||
Reference in New Issue
Block a user