2016-07-16 1 views
0

나는 근본적인 무언가를 이루려고 노력하고 있지만 지금은 두 저녁 동안 진행 중이며 아직 솔리드 (또는 다른) 솔루션을 찾지 못했습니다. 내가 비슷한 주제를 발견하고 거기에 있었지만 아무 소용이 없으므로, 나는 나의 특별한 경우를위한 GitHub 레포를 만들었습니다.Docker가 NodeJS 앱으로 볼륨 매핑을 작성합니다

  • docker-compose up -d
  • 코드를 확인을 통해 매핑됩니다 (I이 예에서 생략 미래에 더 용기를 추가 할 계획)를 사용하여 제공 NodeJS 응용 프로그램 수 : 내가 할 노력하고있어

    volumes 그래서 일부 코드를 로컬에서 변경할 때마다 다시 빌드 할 필요가 없습니다.

내 생각 엔 제가 발생하고있어 문제가 내가 폴더가 시도한 변화의 일부의 예를 들어 일부 파일은 컨테이너 내에서 덮어 쓰기/손실되지 volumes의 매핑을 함께 할 수있는 뭔가,이다 매핑되지만 개별 파일은 매핑되지 않습니다. https://github.com/josephmcdermott/nodejs-docker-issue :

Error: Cannot find module '/src/app/app.js'

가 REPO에 대한 링크는 여기에 있습니다 : 난 그냥 체크 아웃, 내 문제를 설명하고 문제를 볼 수 docker-compose up -d를 실행하는 간단한 REPO를 만들었습니다

은 컨테이너로 인해 사망 , PR은 환영합니다. 누군가가 나를 위해이 문제를 해결할 수 있다면 영원히 감사 할 것입니다.

UPDATE :

- app 
- - * (files I want to sync and regularly update) 
- app.js (initial script to call files within app/) 
- Dockerfile 
- docker-compose.yml 
- package.json 
:

FROM node:4.4.7 

RUN mkdir -p /src 
COPY . /src 
WORKDIR /src 
RUN npm install 

EXPOSE 3000 

CMD ["node", "/src/app.js"] 

고정 표시기 - compose.yml

app: 
    build: . 
    volumes: 
    - ./app:/src/app 

폴더 구조

Dockerfile을 LDG 할 수있는 솔루션 아래 코드 종류의 감사를 참조하십시오

+0

Fyi의 코드는 여기에 게시 할 수있을만큼 짧습니다 (링크를 통해 권장됩니다). – ldg

답변

1

작성 파일에서 마지막 줄인 - /src/app/node_modules이 이전 볼륨보다 매핑 가능성이 높습니다./scr/app를 마운트하면 해당 링크 된 볼륨에 node_modules이 생성됩니다. 그래서 다음과 같이 보일 것이다 :

app: 
    build: . 
    volumes: 
    - ./app:/src/app 

을 링크 된 볼륨으로 전체 /app 디렉토리를 유지하려는 경우, 컨테이너를 시작할 때 어느 npm install을 수행해야합니다 (보장 것이다이 업데이트를 집어 들고) 또는 볼륨을 연결하지 말고 Dockerfile을 업데이트하여 /app 디렉토리 전체를 복사하십시오. 이것은 자급 한 이미지를 제공하기 때문에 좋습니다. 나는 보통 Node.js 애플 리케이션을 이런 방법으로 Dockerize한다. 이미지를 확인하기 위해 npm test을 적절하게 실행할 수도 있습니다.

편집 할 수있는 스크립트 파일 (또는 앱이 부작용을 생성하는 경우)에 연결된 볼륨을 만들어야하는 경우 Docker 볼륨을 통해 해당 디렉토리 또는 파일을 연결할 수 있습니다.

Btw, 나중에 해당 디렉토리의 내용을 복사하지 않으려면 추가하십시오. dockerignore (및 .gitignore).

+0

안녕하세요. 답변 해 주셔서 감사합니다. 나는 당신의 제안을 시도했고 docker-compose.yml에 볼륨을 포함하지 않는 한 '자체 포함 된'이미지를 올바르게 만들 수 있지만, 쉬운 개발을 위해 디렉토리를 매핑하자마자 그것은 사라진다. 나는 같은 github 저장소에 대한 최신 정보를 제공했다. (필자는이 코드를 붙여 넣기보다는 github repo를 사용하여 diff를 유용하게 사용할 수 있음을 알고 있었다. 최신 버전 '오류 : 모듈을 찾을 수 없습니다.'/ app/someFile.js'' –

+0

지금은 저에게 적합합니다. 새로 설치를 시도해 볼 수 있습니까? 여전히 오류가 발생하는 경우 단계를 간략히 설명해주십시오. – ldg

+0

로컬 대 외부는 다른 사람을 돕는 것에 대한 것입니다. http://stackoverflow.com/help/how-to-ask에서 : "... 링크 할 수있는 문제의 실제 예제를 만든 다음 질문에 코드를 포함 시키십시오. 모두가 할 수있는 것은 아닙니다. 외부 사이트에 접속하면 시간이 지날수록 링크가 깨질 수 있습니다. " – ldg

관련 문제