summaryrefslogtreecommitdiff
path: root/README.md
blob: 40d5fea76014a518062c8a03ccc9d5d1758d6f91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# SHI eVCP

## 배포 가이드

1. 프로젝트 압축

```bash
zip -r public/archive-$(date +%Y%m%d-%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*" "./_docker/*" "./db/migrations/*"

zip -r public/archive-$(date +%Y%m%d-%H%M%S).zip . -x "./public/*" "./.git/*" "./.next/*" "./tmp/*" "./temp/*" "./.cursor/*" "./node_modules/*" "./_docker/*" "./db/migrations/*"
```

2. 내부망으로 이동해서 경로 생성 후 압축 풀기

    - `mkdir destination && cd destination`
    - SSH 연결 기반으로 파일 옮기기
    - `unzip archive-xxx.zip`

3. public, node_modules 복사

    - `cp -r current/node_modules/ 대상/`
    - `cp -r current/public/ 대상/`

4. 환경변수 조정
    - ide compare 기능 사용
    - 외부개발서버, 개발서버(60.101.108.100), 품질서버(60.101.108.101), 운영서버(evcp.sevcp.com)는 환경변수를 환경에 맞게 변경해야 합니다. 현재 소스는 외부개발서버에 맞춰져 있으니, 배포시 환경변수를 그대로 사용할 수 없습니다.

5. 배포
    - `pm2 stop evcp && npm run build && pm2 start evcp`

6. 기타 신경써야 할 부분
    - `@/public/pdftronWeb` 경로에 `core`, `ui` 폴더를 복사
        - `cp -r node_modules/@pdftron/webviewer/public/ public/pdftronWeb/`
    - package.json 에서 next 명령어 실행할 때 `./node_modules/next/dist/bin/next`로 스크립트 변경한 이유는 import 관련 에러 처리 목적입니다.

### pm2 관련

pm2는 쉘 연결이 종료되어도 프로그램을 계속 운영하기 위한 목적으로 사용합니다.
현재는 간단한 설정으로 등록하여 사용하고 있습니다. (서버 재시작 대응등을 위해 추가 설정 필요)

`pm2 start npm --name "evcp" -- start`

## 로컬 실행을 위한 DB 준비

1. postgres 17 버전을 준비 (환경변수에 따라 계정 및 데이터베이스 생성)
2. drizzle-kit 으로 ORM to Database 처리 (generate 후 생성 쿼리 실행)
    - drizzle-kit 버그로 인해 migrate 불가
3. (선택) 환경변수 선택을 위한 dotenv-cli 설치 `npm i -g dotenv-cli`

## 주의사항
- **generate 로 생성한 저널과 쿼리는 깃에 push 하지 마세요.**
- 개발한 부분과 관련없는 부분에 대해 포매팅 변경사항을 만들지 마세요.
- 자동 포맷 기능을 종료해두세요 (vscode, prettier, biome 등)
  - formatOnSave 옵션을 비활성화하는 설정이 `.vscode/settings.json` 설정에 작성되어 있습니다.

## 협업전략

- 이전 전략
    - main, dev 브랜치에 다이렉트 푸시 X (PR 사용)
    - features 브랜치에서 새로운 브랜치 생성하기
- 현재 전략
    - dujinkim 브랜치에 작업사항을 직접 커밋 & 푸시합니다.