refactor: .project-env 일원화 + starter→sample 리네임
- 프로젝트 설정을 .project-env 로 통일(셸 cd 시 자동 export, 앱은 process.env 사용) - .env.example → .project-env.example, .gitignore/.dockerignore 에 .project-env 추가 - new-project 복사 흐름 기준으로 README/CLAUDE/MANUAL 갱신 - LiteLLM 키는 ~/.env(update-litellm-key)로 분리 안내 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
20
CLAUDE.md
20
CLAUDE.md
@@ -4,27 +4,27 @@
|
||||
**로컬 개발/테스트는 podman**, **배포는 Coolify(Gitea push → Dockerfile 자동빌드)** 로 한다.
|
||||
|
||||
## 절대 규칙
|
||||
- **비밀값을 코드/커밋에 넣지 마라.** DB·MinIO 자격증명은 항상 환경변수(`.env`, 워크스페이스 env)에서만 읽는다.
|
||||
`.env` 는 절대 커밋하지 않는다(`.gitignore`에 있음). 새 비밀 키가 필요하면 `.env.example` 에 placeholder만 추가.
|
||||
- **비밀값을 코드/커밋에 넣지 마라.** DB·MinIO 자격증명은 항상 환경변수에서만 읽는다.
|
||||
값은 프로젝트의 `.project-env` 에 있고(프로젝트 폴더 cd 시 셸이 자동 export), 이 파일은 **절대 커밋 금지**(`.gitignore`에 있음). 참고용 예시는 `.project-env.example`.
|
||||
- 컨테이너는 `docker` 명령으로 실행해도 되지만 **실제 런타임은 rootless podman**이다(`docker`는 podman 별칭).
|
||||
- 운영 배포를 직접 하지 마라. 배포는 **git push → Coolify**가 담당한다. 너는 코드/Dockerfile만 책임진다.
|
||||
|
||||
## 외부 연결 (이미 워크스페이스 env로 주입됨)
|
||||
## 외부 연결 (프로젝트 `.project-env` 에서 env로 주입됨)
|
||||
- **Postgres**: `DATABASE_URL` (직원 전용 schema로 격리, `search_path` 고정). 코드는 `src/db.js`를 통해 접근.
|
||||
- **MinIO(S3)**: API endpoint `https://minio.bokdev.in` (콘솔 `minioc`가 아님), 버킷 `coolify-user-data`.
|
||||
키는 직원이 `.env`의 `S3_ACCESS_KEY_ID`/`S3_SECRET_ACCESS_KEY`에 채운다. 코드는 `src/s3.js`를 통해 접근.
|
||||
- **LiteLLM**: AI 호출은 `~/.config/litellm/key` 의 virtual key를 쓰는 사내 gateway(`https://litellm.bok.or.kr`)를 경유.
|
||||
키는 `.project-env`의 `S3_ACCESS_KEY_ID`/`S3_SECRET_ACCESS_KEY`. 코드는 `src/s3.js`를 통해 접근.
|
||||
- **LiteLLM**: AI 호출은 사내 gateway(`https://litellm.bok.or.kr`) 경유. virtual key는 워크스페이스 전역인 `~/.env`(`LITELLM_KEY`)에서 관리 — `update-litellm-key` 명령으로 입력. (프로젝트 설정 아님)
|
||||
|
||||
## 로컬 개발 워크플로 (podman)
|
||||
```bash
|
||||
# 이 폴더는 new-project 로 만들어졌고 .project-env(DB/S3)가 이미 채워져 있다.
|
||||
# 폴더에 들어와 있으면 셸이 .project-env 를 자동 export 한 상태다($DATABASE_URL 등 사용 가능).
|
||||
npm install
|
||||
cp .env.example .env # 그리고 MinIO 키 등 채우기 (DB는 자동주입이면 비워둬도 됨)
|
||||
npm run dev # node --watch 로 핫리로드, http://localhost:3000
|
||||
|
||||
# 컨테이너로 동일하게 돌려보기
|
||||
podman build -t starter .
|
||||
podman run --rm -p 3000:3000 --env-file .env \
|
||||
-e DATABASE_URL="$DATABASE_URL" starter
|
||||
podman build -t sample .
|
||||
podman run --rm -p 3000:3000 --env-file .project-env sample
|
||||
# 또는
|
||||
podman compose up --build
|
||||
```
|
||||
@@ -33,7 +33,7 @@ podman compose up --build
|
||||
## 배포 워크플로 (Coolify)
|
||||
1. Gitea repo에 push (`main` 등 배포 브랜치).
|
||||
2. Coolify가 이 **Dockerfile**로 자동 빌드/배포한다(로컬 podman 빌드와 동일 Dockerfile).
|
||||
3. Coolify 쪽 Environment Variables 에 `DATABASE_URL`, `S3_*` 를 채운다(로컬 `.env`와 같은 키).
|
||||
3. Coolify 쪽 Environment Variables 에 `DATABASE_URL`, `S3_*` 를 채운다(로컬 `.project-env`와 같은 키).
|
||||
4. 포트는 컨테이너 `3000`. Coolify에서 도메인/포트 매핑.
|
||||
|
||||
## 코드 규약
|
||||
|
||||
Reference in New Issue
Block a user