docs: 배포 앱 도메인을 *.apps.bokdev.in 으로 명확화

- URL 표/12번: 배포 앱 주소 = https://<이름>.apps.bokdev.in (Coolify Domains에 직접 지정)
- 12번 1)-3 도메인 지정 단계 추가(.apps.bokdev.in 필수, 고유 이름, *.coder 미리보기와 별개)
- 4) 테스트 curl 예시를 .apps.bokdev.in 주소로
- FAQ: 배포 주소 안 열림/인증서 경고 = .apps.bokdev.in 으로 끝나는지 확인

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
infra
2026-06-15 09:43:21 +09:00
parent d00645214a
commit e7a961938f

View File

@@ -18,7 +18,7 @@ DB·MinIO·AI(LiteLLM)·Git(Gitea)·배포(Coolify)가 미리 연결돼 있어,
| **배포(Coolify)** | https://coolify.bokdev.in | 앱 빌드·배포·로그 (12번) |
| **파일저장소(MinIO 콘솔)** | https://minioc.bokdev.in | 업로드된 파일 눈으로 확인 (선택) |
| **개발 중 앱 미리보기** | `https://<자동생성>.coder.bokdev.in` | 로컬 실행 앱 브라우저 확인 (9·10번, VS Code PORTS가 자동 발급) |
| **배포된 앱 주소** | `https://<Coolify가 알려줌>` | 실제 서비스 확인 (12번) |
| **배포된 앱 주소** | `https://<이름>.apps.bokdev.in` | 실제 서비스 확인 (12번, Coolify에서 도메인 지정) |
> 코드에서 쓰는 주소(자동 주입, 직접 입력 불필요): **DB** `10.200.0.152:5432` · **MinIO API** `https://minio.bokdev.in` · **AI 게이트웨이** `https://litellm.bok.or.kr`.
> (콘솔 `minioc` 와 API `minio` 는 다릅니다 — 코드는 `minio`, 사람이 눈으로 볼 땐 `minioc`.)
@@ -354,6 +354,9 @@ git push -u origin main
- **Repository URL 은 반드시 전체 주소**로 입력: `https://gitea.bokdev.in/<본인사번>/myapp.git`
(`<본인사번>/myapp` 처럼 줄여 쓰면 clone 이 실패합니다.)
- Branch: `main`, Port: `3000`
3. **도메인(공개 주소) 지정** — 앱의 **Configuration → Domains** 에 **`https://<원하는이름>.apps.bokdev.in`** 형태로 입력하세요(예: `https://myapp.apps.bokdev.in`).
- 반드시 **`.apps.bokdev.in` 로 끝나는** 주소여야 외부에서 https 로 열립니다(와일드카드 TLS·라우팅이 이 대역에 준비돼 있음).
- `<원하는이름>` 은 **다른 사람과 겹치지 않게** 정하세요(예: `사번-앱이름`). 미리보기(9번)의 `*.coder.bokdev.in` 과는 별개 대역입니다.
**2) 환경변수 입력** (앱마다 **최초 1회만**, 이후 배포엔 유지됨)
- Coolify의 **Environment Variables** 에 입력: `DATABASE_URL`, `S3_ENDPOINT`, `S3_REGION`, `S3_BUCKET`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `PORT`
@@ -374,17 +377,17 @@ git push -u origin main
- 빌드는 됐는데 컨테이너가 `Unhealthy`/재시작 반복 → 보통 Env 누락(아래 4번 확인).
**4) 배포된 앱 주소 확인 + 테스트**
1. 앱의 **Configuration → Domains**(또는 앱 상단)에 **공개 주소**가 표시됩니다. 없으면 Coolify 가 자동 도메인을 주거나, 원하는 도메인을 지정할 수 있습니다(예: `https://myapp.bokdev.in`).
1. 앱 주소는 **1)-3에서 지정한 `https://<원하는이름>.apps.bokdev.in`** 입니다(배포가 끝나면 그 주소로 외부에서 열립니다).
2. 그 주소로 **9·10번과 똑같이** 엔드포인트를 확인합니다(브라우저 또는 PC 터미널 `curl`):
```bash
curl https://<배포주소>/healthz # {"ok":true} ← 앱 기동 OK
curl https://<배포주소>/db # {"ok":true,"now":...} ← DB Env OK
curl https://<배포주소>/s3 # {"ok":true,"bucket":...} ← S3 Env OK
curl https://<원하는이름>.apps.bokdev.in/healthz # {"ok":true} ← 앱 기동 OK
curl https://<원하는이름>.apps.bokdev.in/db # {"ok":true,"now":...} ← DB Env OK
curl https://<원하는이름>.apps.bokdev.in/s3 # {"ok":true,"bucket":...} ← S3 Env OK
```
- `/healthz` 만 되고 `/db`·`/s3` 가 500 이면 → **Coolify Env 문제**(2번). `.project-env` 값과 정확히 같은지(특히 `DATABASE_URL` 의 `%20`/`%3D`) 다시 확인하고 재배포.
3. 이후 코드를 고쳐 **`git push` 하면 자동으로 다시 빌드·배포**됩니다(Deployments 에서 새 빌드 로그 확인 → 같은 주소로 재확인).
> 자주 막히는 것: ① Repository URL 전체주소 ② `DATABASE_URL` host 가 `10.200.0.152` + 인코딩(`%20`/`%3D`) 그대로인지 ③ Env 를 앱에 저장했는지. (FAQ 참고)
> 자주 막히는 것: ① Repository URL 전체주소 ② `DATABASE_URL` host 가 `10.200.0.152` + 인코딩(`%20`/`%3D`) 그대로인지 ③ Env 를 앱에 저장했는지 ④ 도메인을 `.apps.bokdev.in` 으로 지정했는지. (FAQ 참고)
---
@@ -409,6 +412,7 @@ git push -u origin main
- **Q. `podman build` 가 `npm ci`/`npm install` 단계에서 실패해요** → 의존성 문제입니다. 먼저 워크스페이스에서 `npm install` 이 되는지 확인하고, `package.json` 에 빠진 패키지가 없는지 보세요(10번).
- **Q. Coolify 빌드는 성공했는데 앱이 안 떠요(Unhealthy/재시작 반복)** → 보통 Env 누락입니다. `/healthz` 만 확인해 보고, DB/S3 Env(2번)를 `.project-env` 그대로 넣었는지 확인 후 재배포하세요(12번).
- **Q. Coolify 가 옛날 코드로 빌드돼요** → `git push` 가 됐는지(11번), Coolify 의 Branch 가 `main` 인지 확인하세요. push 후 Deploy(또는 자동배포)를 다시 도세요.
- **Q. 배포된 앱 주소가 안 열려요(접속 안 됨 / 인증서 경고)** → 도메인을 **`.apps.bokdev.in` 으로 끝나게** 지정했는지 확인하세요(12번 1)-3). 그 대역만 외부 https 가 준비돼 있습니다. 다른 대역(예: `*.bokdev.in` 루트, 임의 도메인)은 안 열리거나 인증서 경고가 납니다. 이름이 남과 겹쳐도 충돌하니 `사번-앱이름` 처럼 고유하게 정하세요.
- **Q. 빌드/실행은 됐는데 브라우저로 안 열려요** → 워크스페이스 앱은 `localhost` 가 PC 에서 안 열립니다. VS Code **PORTS → Forward 3000 → Open in Browser**(`https://<자동생성>.coder.bokdev.in`)로 여세요(9번). 배포된 앱은 Coolify 가 준 공개 주소로 엽니다(12번).
- **Q. DB가 비어있어요** → 정상입니다. 본인 전용 빈 스키마가 제공됩니다. 테이블은 직접 만들면 됩니다.
- **Q. K8s(쿠버네티스)는 어떻게 봐요?** → 직원은 K8s에 직접 접근하지 않습니다. DB/스토리지/배포는 위 도구들로 충분합니다.