2017-08-26 74 views
5
# Dockerfile 
FROM node:7-alpine 
RUN mkdir -p /src/app 
WORKDIR /src/app 
COPY package.json /src/app/package.json 
RUN npm install 
COPY . /src/app 
EXPOSE 3000 
CMD ['npm', 'start'] 

próbuję wypełnić katacoda.com ćwiczenia dla Dockerizing nodejs aplikacji z Dockerfile powyżej. Kompilacja zakończy ale działa obraz i natychmiast zamykany w dziennikach Döcker widzę:NPM Nie znaleziono podczas uruchamiania pojemnik Döcker od węzła obrazu

/bin/sh: [npm,: not found 

Próbowałem uruchomiony pojemnik w trybie interaktywnym z docker -it nodeapp /bin/bash dzięki czemu poziom błędu docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory". Więc nie jestem pewien, co się tu dzieje .

+0

spróbuj 'docker -it nodeapp sh', a następnie' który npm', aby zobaczyć, czy npm jest zainstalowany, czy nie –

+0

ponieważ alpejskie doees nie posiadają bash stąd powyższy błąd. spróbuj z 'sh' i sprawdź' npm' później gdy już będziesz w –

+0

dzięki @TuanAnhTran 'docker -it nodeapp sh' działa, a npm jest zainstalowany i npm start działa – Peter

Odpowiedz

5

Powodem nie działa to pojedyncze cudzysłowy

CMD ['npm', 'start'] 

powinny być

CMD ["npm", "start"] 

Kiedy nie używać cudzysłowów, doker usunie apostrofów i przetwarzać polecenia jako [npm, start]

Dlatego widzisz błąd [npm,: nie znaleziono

+0

Dzisiaj dowiedziałem się. Dzięki –

+0

Przyzwyczaiłem się używać pojedynczego cudzysłowu, dziś też się nauczyłem –