docker volume hotload방법

YU YU·2021년 11월 4일
0

0. 핫로드가 되야하는 이유

일단 우리팀은 4명인데 1명이 macOs를 사용한다. 그런데 macOs에서는 uniswap이 그냥 실행이 되는 반면, 다른곳은 그렇지 못하다. 그래서 개발 환경을 맞추기 위해 핫로드가 되어야한다.

1. 해본 방법

볼륨 컨테이너를 만들고, 컨테이너를 거기를 바라보는 방법...
->실패
->제대로 연동을 하려면 로컬파일이 변해야 한다.

2. 문제

동기화를 하고 패키지를 깔아야 hotload가 제대로 작동할 수 있다.
그래서 동기화하고 패키지를 까는 이미지 하나,
그리고 그걸 실행시키는 이미지 하나
따로따로 만들어서 실행시키기로 하였다.

이미지 파일 안에서 yarn을 해버리면 이미지파일이 커질 뿐 아니라 볼륨을 연동하는 과정에서 기존의 node_modules가 없는 파일이 덮으면서 컨테이너 디렉토리를 덮으면서 nodemodules가 없어지는 문제가 발생한다. 그래서 실행이 되지 않는다.

3. 해결방법

  1. CMD["yarn"] 으로 끝나는 dockerfile을 만들어서, 볼륨을 로컬로 설정하고 yarn을 이용해 로컬에서도 패키지들이 설치되는 방향으로 한다.

2.노드와 최소사양만 설치된dockerfile을 만들어서 볼륨을 공유한다.
(로컬 디렉토리를 공유받거나, 1번에서 만든 컨테이너를 볼륨으로 설정하거나)

4. 그러나 핫로드가 되지 않는다.

CHOKIDAR_USEPOLLING=true
설정을 해주어야 한다고 한다.
docker run --name uniswap10 -v ${pwd}:/home/node/app -p 3010:3000 -e CHOKIDAR_USEPOLLING=true server1
실행할때 이렇게 해주거나
dockerfile에 이렇게 써주면 된다.
ENV CHOKIDAR_USEPOLLING=true

profile
코딩 재밌어요!

0개의 댓글