동료가 만든 도커 컨테이너를 빌드 할 때 이끼가있는 포인트 메모

2966 단어 npm도커Node.js

처음에



동료가 작성해 준 node의 docker 컨테이너를 build할 때에 몇점인가 이끼한 포인트가 있었으므로 메모해 보겠습니다.
같은 경우에 끼고있는 분이 있으면 도움이 될 수 있다고 생각합니다!

전제



컨테이너를 만든 사람의 PC
Mac Pro
여기의 환경에서는 일발 docker-compose up --build 를 흘리면 build와 up가 통과한다
내 PC
Windows10 Pro
npm --version
6.14.5
몇 번 이끼
컨테이너 구성
Node→image: node:latest
MySQL→image: mysql:5.7
Nginx→image: nginx:latest

Cannot create container for service mysql: Conflict





이미 mysql이라는 이름의 컨테이너가 존재하기 때문에 컨플릭트하자는 에러군요.
다른 노드와 nginx도 마찬가지로 발생했습니다.
잘 디폴트의 이름으로 컨테이너명을 붙이는 것이 많기 때문에, 프로젝트마다 컨테이너명을 Aservice_mysql라든지 독특한 이름을 지정하면(자) 부드러운지도 모르겠네요.
이미 존재했던 mysql 컨테이너는 이미 거의 움직이지 않는 프로젝트의 것이었기 때문에,
docker rm コンテナID

에서 삭제했습니다.

npm ERR! enoent ENOENT: no such file or directory, rename '/src/node_modules/constantinople' -> '/src/node_modules/.constantinople.DELETE'



constantinople을 찾을 수 없으면 화가났습니다.
constantinople은 상수 평가에 사용하는 모듈처럼 보입니다.
htps //w w. 음 pmjs. 코 m / Pac 카게 / 콘 s Tanchi의 p
사용중인 npm 버전을 최신으로 업데이트하고 해결했습니다.
6.14.5→6.14.8
npm install -g npm

만약 이 방법으로 고치지 않았던 경우, 단지 npm install시에 module의 내용이 파손되고 있는 패턴이나, package-lock.json 가 각 모듈을 좋지 않은 조합의 버젼으로 고정하고 있는 패턴이 생각되므로,
node_modules의 내용을 모두 삭제합니다.
package-lock.json을 삭제하고 다시 npm install
시도해보십시오.

npm ERR! Maximum call stack size exceeded



Node의 최대 호출 스택 크기를 초과하면 발생하는 것 같습니다.
뭐 Mac에서 일어나지 않는데 Windows에서는 일어나는거야.
npm 캐시를 삭제하고 다시 build하면 문제없이 시작할 수있었습니다.
npm cache clean --force

참고 : https://www.it-swarm.dev/ko/javascript/npm%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3% 83%AB%E3%81%A7%E6%9C%80%E5%A4%A7%E3%82%B3%E3%83%BC%E3%83%AB%E3%82%B9%E3%82% BF%E3%83%83%E3%82%AF%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E8%B6%85%E3%81%88% E3%81%BE%E3%81%97%E3%81%9F/829336672/
덧붙여서 node의 stack 사이즈를 변경하면 잠정적으로 이 콜 스택 사이즈 문제는 해결합니다만,
Node의 퍼포먼스가 나빠지는, 최악동동이 없어질 우려가 있으므로 멈추는 것이 무난인 것 같습니다. .

마지막으로



같은 개발 환경을 순간적으로 구축할 수 있는 docker는 개발 씬에 필수라고 할 수 있는 툴이 되고 있군요!
다른 OS에서도 움직이는 것은 멋집니다.

좋은 웹페이지 즐겨찾기