ONBUILD选项出错(Windows中的Docker工具箱)

时间:2016-03-28 13:29:14

标签: node.js windows docker npm

我的Windows上的Docker问题(通过Docker Toolbox)。可能有人可以提供帮助。

没有ONBUILD的我的Dockerfile:

SQLSTATE[42S22]: Column not found: 1054 
Unknown column '0' in 'where clause' 
(SQL: select * from `devices` where (`0` = 1))

正常工作( docker build -t test。并启动它: docker run -it --rm --name testrun test ) 但是,如果我将Dockerfile更改为ONBUILD选项:

FROM node:5.9.1

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app

CMD [ "npm", "start" ]
EXPOSE 3000

我收到错误:

FROM node:5.9.1

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

ONBUILD COPY package.json /usr/src/app/
ONBUILD RUN npm install
ONBUILD COPY . /usr/src/app

CMD [ "npm", "start" ]
EXPOSE 3000

我做错了什么? (我是Docker的新手:))。也许我错了使用ONBUILD?但就像任何不清楚的事情一样,没有。

2 个答案:

答案 0 :(得分:2)

Dockerfile man page中所述:

  

ONBUILD指令为图像添加稍后要执行的触发指令,当图像用作另一个版本的基础时

由于您没有使用以" FROM test"开头的其他图像,因此这些指令永远不会执行,这意味着test图像不包含这些命令应该执行的操作

答案 1 :(得分:1)

除非您在问题中遗漏了一些细节,否则您未正确使用ONBUILD

ONBUILD选项是将命令排入队列以在后续构建中运行。除非您将图像包含在另一个Dockerfile的FROM引用中,否则上面指定的命令将无法执行。

有关其他信息,请参阅此主题的Dockerfile reference