본문 바로가기
사이드 프로젝트/로그인 & 회원가입 & 결제

프로젝트 작업 기록 - 예시 코드 clone, 동작 확인 (docker, DB 세팅)

by 코드스니펫 2024. 3. 20.
반응형

프로젝트 작업 기록 - 예시코드 clone, 동작 확인 (docker, DB 세팅)

 

벡앤드 프로젝트 readme

 

프로젝트 진행에 관한 예시코드를 클론 받은 뒤 명령어 실행으로 프로젝트 동작하는 것부터 실습 해봤습니다. 패키지 설치부터 구동까지 초기 설치 작업하는 데서 헤매다가 설치 과정을 구글링하며 진행했습니다.

 

 

프로젝트 작업 기록

 

전구 아이디어

 

오늘 배운 내용

- 프로젝트 초기 설정 : clone 이후 프로젝트 동작을 위한 전반적인 설치, 설정 진행

- Docker 동작, 기초 사용법 : docker 네트워크 생성 및 docker 빌드 과정 명령어 수행

- 시스템 리소스 관리 : PC 용량 문제로 발생한 docker 문제 경험

- 데이터베이스 설정과 관리 : PostgreSQL 설치 및 설정 수행, pgAdmin4의 설치와 데이터 관리 방법 경험

- TypeScript와 Entity 관계 설정 : TypeScript에서 발생한 오류를 해결하는 과정을 통해, 엔티티 간의 관계 설정 방법과 TypeScript의 타입 시스템에 대한 이해 경험

 

 

오늘 진행한 내용

프로젝트 진행간에 참고할 예시코드는 아래와 같습니다.

 

 

GitHub - DevCamp-TeamSparta/backend-material

Contribute to DevCamp-TeamSparta/backend-material development by creating an account on GitHub.

github.com

 

스파르타코딩클럽 데브캠프 교육에서 제공한 github 자료로, 프로젝트에서 요구하는 로그인, 회원가입, 결제 기능에 대한 전반적인 예시코드가 있습니다. 프로젝트 클론 후 진행해야 하는 명령어는 다음과 같습니다.

 

# 패키지 설치
yarn install

# pre-commit hook 설치 (꼭 설치해주세요!)
brew install pre-commit
pre-commit install -t commit-msg

# 구동
cd docker
sh create-network.sh
make build env=local
make run env=local

 

pre-commit hook 설치부터해서 brew install pre-commit, pre-commit install -t commit-msg 까지 마치고 docker 폴더에 들어가 create-network.sh 실행한 다음 docker를 열어두어 build 하는데 까지 진행했습니다.

 

 

failed to fetch metadata: signal: bus error

docker build 하다가 failed to fetch metadata: signal: bus error 발생하여 재부팅했습니다. 그래도 안되서 원인 찾아보다가 PC 용량 문제로 docker 오류 발생했다는 걸 알게 되었습니다. 이후 용량 정리했습니다.

 

클라우드 형식의 아이디어 아이콘

 

"/.env": not found

용량 정리를 마치고 다시 docker build를 했습니다. 그런데 이번엔 아래 오류가 발생했습니다. ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref e43c7d12-3417-40e9-a813-1b8fda25266f::4wzz5xcm85jek8yobq70j5e4s: "/.env": not found

 

원인은 .env 파일 누락으로 app.module.ts에서 .env에 등록된 변수 파악했습니다. 찾아보니 DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_DATABASE 의 DB 설정정보와 RUNTIME의 애플리케이션 실행환경 지정 변수가 있다는 걸 알 수 있었습니다.

 

//app.module.ts
...

      useFactory: (configService: ConfigService) => ({
        type: 'postgres',
        host: configService.get<string>('DB_HOST'),
        port: configService.get<number>('DB_PORT'),
        username: configService.get<string>('DB_USERNAME'),
        password: configService.get<string>('DB_PASSWORD'),
        database: configService.get<string>('DB_DATABASE'),
        autoLoadEntities: true,
        synchronize: configService.get<string>('RUNTIME') !== 'prod',
        logging: configService.get<string>('RUNTIME') !== 'prod',
      }),
      
  ...

 

 

PostgreSQL설치

그래서 프로젝트에 사용된 DB인 PostgreSQL설치부터 진행하였습니다.

 

 

PostgreSQL와 함께 pgAdmin4도 설치했습니다. 설치 후 pgAdmin4 실행하려고 보니 화면이 안나오는 오류 발생했습니다.

 

찾아보니 PostgreSQL 설치시 추가로 pgAdmin4 설치하는 방법보다 직접 설치하는게 더 낫다는 정보를 참고하여 :\Users\%USERNAME%\AppData\Roaming\pgAdmin 경로에 있는 데이터를 지우고, pgAdmin 4 설치파일을 직접 실행하는 방법을 사용했습니다.

 

▼ 설치한 파일 경로▼

 

PostgreSQL: File Browser

 

www.postgresql.org

 

pgAdmin4 설치 완료
pgAdmin4 설치 완료

 

pgAdmin 드디어 열림
pgAdmin4 실행 중

 

pgAdmin4 실행 후 database 생성

 

database 생성

 

정상 동작하는 걸 확인하고 build 진행해보니 ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref e43c7d12-3417-40e9-a813-1b8fda25266f::4wzz5xcm85jek8yobq70j5e4s: "/.env": not found 그래도 동일한 오류 발생했습니다.

 

ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref e43c7d12-3417-40e9-a813-1b8fda25266f::4wzz5xcm85jek8yobq70j5e4s: &quot;/.env&quot;: not found 오류

 

 

docker Desktop 재설치

.env 파일을 docker 디렉토리에 넣고 해도 소용이 없었습니다. 다시 구글링 해보니 docker Desktop 버전 문제일 수도 있다는 자료를 보았습니다. 그래서 버전 4.26.1 -> 4.28.0로 재설치 진행했습니다.

 

 

[BUG] docker compose build failed to compute cache key at copy of parent folders where Dockerfiles are located v2.24.3-desktop.1

Description Since docker desktop upgrade from 4.26 to 4.27.1 when i running docker compose --file .\docker\prod\docker-compose.yaml build the COPY operations on Docker if i try to copy something sp...

github.com

 

 

[BUG] <docker compose build fails with changes out of order error since docker compose 2.24 / docker desktop 4.27 on Windows> ·

Description Since docker desktop upgrade from 4.26.1 to 4.27 I get "changes out of order errors" when running docker compose build I just expect build to succeed like in older docker desktop versio...

github.com

 

docker desktop 4.28.0 설치 과정

 

 

entity 관계 설정 오류

설치 후 .env 파일 다시 루트 디렉토리에 넣고 build 돌리니까 위 오류 사라졌습니다. 대신 src 안 order.entity.ts에서 error TS2339: Property 'orders' does not exist on type 'User'. 오류, point.entity.ts에서 error TS2339: Property 'point' does not exist on type 'User'. 오류가 발생했습니다.

 

둘 다 user.entity.ts에서 발생한 것을 보고 파일을 확인해보니 user.entity.ts에 order와 point 관계 설정이 안되어 있었습니다. 그래서 해당 파일에 관계 설정하였습니다.

 

// user.entity.ts 에 추가한 코드

  @OneToOne(() => Point, (point) => point.user)
  @JoinColumn()
  point: Relation<Point>;

  @OneToMany(() => Order, (orders) => orders.user)
  orders: Relation<Order[]>;

 

관계 수정 후 build 성공했습니다.

 

하지만 make run env=local 명령어는 진행하지 못했습니다. 그리고 코드 분석도 하지 못했습니다. 위처럼 설치와 설정을 하다보니 시간이 오래 걸려서 못했습니다. 다음날에 run 동작과 함께 코드 분석을 할 예정입니다.

 

▼ 전날 작업 기록 ▼

 

 

로그인, 회원가입, 결제 기능 프로젝트 기획, NestJS와 TypeORM 채택

로그인, 회원가입, 결제 기능 프로젝트 기획, NestJS와 TypeORM 채택 내일배움캠프의 교육이 끝나고나서 사이드 프로젝트로 진행하는 로그인, 회원가입, 결제 기능 프로젝트입니다. 이번 프로젝트에

lemonlog.tistory.com