- docker가 설치되어 있어야 함
- 백엔드 레포 클론 후
- 루트 디렉토리에 .env 파일 생성 후 아래 내용 추가
DATABASE_URL="mysql://root:root@db/db"
- 루트 디렉토리에서 아래 명령어 실행
docker-compose down --rmi local
docker-compose up -d
- http://localhost:3000/docs 에서 api 문서 확인
- docker가 설치되어 있어야 하고 dockerhub의 raipen 계정에 로그인 되어 있어야함(백엔드 레포 클론은 필요 없음)
- docker-compose.yml 파일 생성 후 아래 내용 추가
version: "3"
services:
db:
image: mariadb:10.9.7
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: db
networks:
- my-network
server:
image: raipen/reinpos:latest
environment:
DB_HOST: db
DB_PORT: 3306
DATABASE_URL: mysql://root:root@db/db
container_name: reinpos
ports:
- 3000:3000
depends_on:
- db
networks:
- my-network
links:
- db
networks:
my-network:
- docker-compose.yml 파일이 있는 디렉토리에서 아래 명령어 실행
docker-compose down --rmi local
docker-compose up -d
- http://localhost:3000/api/... 으로 api 테스팅
- node(18버전 이상)와 npm이 설치되어 있어야 함
- 루트 디렉토리에 .env 파일 생성 후 개발용 데이터베이스 정보 추가
DATABASE_URL="mysql://사용자:비밀번호@주소:포트/데이터베이스명"
- 루트 디렉토리에서 아래 명령어 실행
npm install
npm run prisma
npm run dev
- 개발용 빌드 과정중 npm run prisma를 1회이상 실행해야 함
- 루트 디렉토리에서 아래 명령어 실행
npm run test
- 테스트 커버리지 확인
npm run test:coverage
main 브랜치에 push하면 자동으로 배포되도록 CD 설정할 예정
Commit Type | Title | Description | Emoji |
---|---|---|---|
feat | Features | A new feature | ✨ |
fix | Bug Fixes | A bug Fix | 🐛 |
docs | Documentation | Documentation only changes | 📚 |
style | Styles | Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) | 💎 |
refactor | Code Refactoring | A code change that neither fixes a bug nor adds a feature | 📦 |
perf | Performance Improvements | A code change that improves performance | 🚀 |
test | Tests | Adding missing tests or correcting existing tests | 🚨 |
build | Builds | Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) | 🛠 |
ci | Continuous Integrations | Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) | ⚙️ |
chore | Chores | Other changes that don't modify src or test files | ♻️ |
revert | Reverts | Reverts a previous commit | 🗑 |
각 폴더에 이미 작성된 파일들을 참고하면서 아래 순서로 진행하는 것을 추천
- (필요하다면) src/models 폴더에 새로운 모델 파일 추가
- src/DTO 폴더에 새로운 DTO 작성
- 해당 api를 사용하는 테스트를 test/integration 폴더에 작성
- src/api 폴더에 새로운 api 작성, 새로운 api 파일을 만들었다면 src/api/index.ts에 등록
- src/services 폴더에 새로운 service 작성
- ~ 서버 실행까지
- src/config/index.ts에서 환경변수를 읽어오고, 없으면 디폴트 값으로 설정
- src/loaders/index.ts에서 src/config/index.ts에서 읽어온 환경변수를 이용해 필요한 라이브러리들을 초기화하고 서버에 api를 등록
- src/server.ts에서 서버를 생성하고 src/loaders/index.ts로 서버를 넘겨서 세팅
- src/index.ts에서 src/server.ts에서 생성한 서버를 실행
- api request 처리 과정
- src/server.ts에서 생성한 서버는 src/api/index.ts에서 등록한 api를 사용
- src/api/index.ts에서 등록한 api는 src/services 폴더에 있는 service를 사용
- src/services 폴더에 있는 service는 src/models 폴더에 의해 생성된 prisma client를 사용
- 위 과정에서 데이터들은 src/DTO 폴더에 있는 DTO를 통해 전달됨