2017-08-28 54 views
0

我有dockerfile已基本圖像去,我安裝NPM /節點:可以運行NPM /節點搬運工容器而不是在dockerfile

FROM golang:1.7 
RUN apt-get update && apt-get install -y wget 

###node 
ENV NVM_DIR /usr/local/nvm 
ENV NODE_VERSION 6.10.1 

RUN wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash \ 
    && . $NVM_DIR/nvm.sh \ 
    && nvm install $NODE_VERSION \ 
    && nvm alias default $NODE_VERSION \ 
    && nvm use default 

ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules 
ENV PATH  $NVM_DIR/v$NODE_VERSION/bin:$PATH 

當我開始這個容器我可以進行內部nodenpm命令容器:

docker exec -it 763993cc1f7a bash 
[email protected]:/go# npm -v 
3.10.10 

但是,當我添加節點或NPM命令到dockerfile:

RUN npm ... 

我得到:/bin/sh: 1: npm: not found 這怎麼可能?

+2

這可能是你的問題https://stackoverflow.com/questions/25899912/install-nvm-in-docker – yamenk

+0

@yamenk是的! – DenCowboy

+2

你爲什麼從Go基地建立一個Node圖像? –

回答

2

您需要避免使用NVM。你可以在你的代碼中使用Multi stage dockerfile。假設圍棋是主要的應用,而需要的WebPack或其他建設活動NPM

所以你最終搬運工文件應該像下面

ARG NODE_VERSION 
FROM node:${NODE_VERSION} as static 
... 
RUN webpack build 


FROM go:1.7 
COPY --from=static /app/static /app/static 
.... 
CMD ["./goapp"] 

此功能在碼頭工人介紹17.05 CE,所以你需要最新版本。

+0

非常容易使用,我的圖像尺寸縮小了150MB – DenCowboy