2016-08-04 3 views
1

문제가 발생했습니다. 문제가 발생했습니다. 문제가있는 것은 확실하지만 도커 전문가에게는 명백하지만 분실됩니다.실행시 도커 웹팩 컴파일 된 파일이 누락 됨

아래는 내 dockerfile입니다. 몇 개의 "ls"를 추가 했으므로 webpack에서 생성되는 파일을 검토 할 수 있습니다.

첫 번째 "LS는"제대로

Step 8 : RUN ls server/public 
---> Running in 67bc7ee5f832 
bundle.css 
bundle.js 
index.html 

을 보여주는하지만 두 번째 LS는

web_1 | index.html 

Dockerfile되지 않습니다 :

FROM node:6.2 

# Create app directory 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY package.json /usr/src/app/ 

RUN npm i 

COPY . /usr/src/app/ 

# Build Static Resources 
RUN npm run build 

# ls here shows correct files 
RUN ls server/public 

# Bundle app source 

ENV NODE_ENV=production 

# ls here doesn't show compiled files 
CMD ls server/public && npm start 

EXPOSE 3000 

나는 무엇을 놓치고? nodejs가 실행 된 후에 이러한 bundle.css/js가 브라우저에없는 이유는 무엇입니까?

디렉토리가 올바르게 복사되었는지 어떻게 확인할 수 있습니까?

감사

답변

1

RUN은 이미지의 docker build 동안 실행하는 단계를 정의합니다.

CMD은 컨테이너 (docker run)가 실행될 때 실행되는 기본 명령 (또는 정의 된 경우 ENTRYPOINT에 전달 된 인수)을 정의합니다.

Docker도 레이어를 캐시하므로 Docker가 동일한 이전 레이어의 해시에서 정확한 명령에 대한 결과 이미지를 찾으면 다른 빌드를 수행하면 RUN ls이 건너 뜁니다.

당신은 그것을 찾아 쉘을 실행할 수 있습니다, 컨테이너 내부를 들여다하려면

docker run -it --rm your_image_name /bin/bash

당신이 /bin/bash 통과 이후

는 기본 CMD는 무시됩니다 만 쉘이 시작됩니다.

+0

내 문제는 내 저장소를 원격 서버에 끌어 넣으려고했다는 것입니다. 거기서 이미지를 만든 다음 작동하지 않는 "docker-compose up"을 사용하십시오. 대신 이미지를 로컬로 빌드하고 도커 허브에 업로드 한 다음 원격 서버에서 가져 와서 개별적으로 실행하고 예상대로 작동합니다. – Lucas

+1

이 문제를 되돌아 보면, 볼륨 마운트가 완료 될 것으로 예상됩니다. 작성 파일 그 파일이 없다면 이것은 단지 추측 일뿐입니다. @Nachiket, 귀하의 파일과 함께 새로운 질문을 열어주십시오, 코멘트는 q & a를위한 좋은 장소가 아닙니다. – BMitch