Dev/개발 일지

6. 프로젝트 세팅 (husky 커밋 훅, docker)

takeU 2024. 10. 8. 10:21
반응형

프로젝트 세팅

husky 커밋 훅 설정

커밋 시 자동으로 prettier를 적용해서 커밋하도록 설정

root에서 설치

pnpm add -wD husky lint-staged

rootpackage.json에 추가

"scripts": {
    "prepare": "husky"
}
"lint-staged": {
    "apps/maplem/frontend/src/**/*.{js,ts,tsx}": [
      "prettier --cache --write"
    ],
    "apps/maplem/backend/src/**/*.{js,ts}": [
      "prettier --cache --write"
    ],
    "configs/**/*.{js,json}": [
      "prettier --cache --write"
    ]
}

커밋 시 lint-staged 실행되도록 프리커밋 훅 .husky/pre-commit 추가

#!/bin/sh

pnpm lint-staged
git update-index --again || exit 1

docker 세팅

우선 각 프로젝트에 도커파일을 두는게 아니라 프로젝트별로 묶어서 관리하려 함
또한 개발 모드에서는 변경 사항이 실시간으로 바뀌도록 볼륨 마운트를 설정

- root
  - docker
    - maplem
      - dev
        - docker-compose.yml
        - Dockerfile.backend
        - Dockerfile.frontend
      - prod 
        - nginx
          - nginx.conf
        - docker-compose.yml
        - Dockerfile.backend
        - Dockerfile.frontend

docker 초기화 커맨드

docker stop $(docker ps -aq) # 모든 컨테이너 중지
docker rm $(docker ps -aq) # 모든 컨테이너 삭제
docker rmi $(docker images -q) # 모든 이미지 삭제
docker volume rm $(docker volume ls -q) # 모든 볼륨 삭제
docker network rm $(docker network ls -q) # 모든 네트워크 삭제

docker system prune -a --volumes # 전체삭제

Docker 이슈

처음에 도커에 대한 이해 없이 그냥 사용하려하니까 잘 안돼서, 공부하고 삽질하느라 한 2 ~ 3주 정도 소요됨.

개발용과, 배포용 두 버전의 도커 프로세스를 구성해서 동작하도록 설계했는데,

watch 기능이 생각한 대로 잘 동작하지 않아서, 개발환경에서는 사용하지 못할 것 같음..

세팅만 한세월하고 있어서 배포용 도커파일은 기능개발이 어느정도 완성된 시점에 다시 작성할 예정.

+

Turborepo + vite + docker 로 구성된 프로젝트의 컨테이너에서 hot reloading 세팅이 되신분은 도움 부탁드려요