2016-10-19 174 views
-1

看起來像在構建過程中,PATH環境變量被忽略。我有我的Dockerfile這樣的:Dockerfile忽略PATH環境變量

COPY my_app /opt/my_app 
RUN echo $PATH 
RUN node --version 

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

...,它gaves我編譯時錯誤,他說:

/bin/sh的:節點:命令未找到 命令「/ bin/sh的-c節點--version」返回非零代碼:127

線運行回聲$ PATH我表明節點-dir是已經在PATH,那麼爲什麼它沒有被拾起碼頭構建?

​​

回答

0

我相信你需要在使用node之前配置NVM。

像這樣的東西應該工作:

COPY my_app /opt/my_app 
RUN echo $PATH 
RUN nvm use 6.9.0 
# or, if you want this version to be the default `node`, use: 
# `nvm alias default 6.9.0` 
RUN node --version 

CMD ["node", "app.js"] 
1

$PATH變量可從您的主機環境只在編譯的時候,而不是在運行時。無論如何,當你製作特定於機器的圖像時,我強烈建議不要在構建時使用它。

docker run documentation明確指出哪些環境變量在運行時設置爲默認值。其他任何需要手動設置。這就是它說:

當創建一個新的集裝箱,碼頭工人將自動設置以下環境變量:

HOME Set based on the value of USER 
HOSTNAME The hostname associated with the container 
PATH Includes popular directories, such as :/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
TERM xterm if the container is allocated a pseudo-TTY