Docker ONBUILD COPY似乎不复制文件

时间:2016-06-14 14:09:28

标签: docker dockerfile

我在执行docker build命令时尝试将文件复制到docker镜像。我不确定我做错了什么,因为这似乎适用于docker rails onbuild文件,但不适用于我的自定义dockerfile。

这是我的 Dockerfile

FROM ubuntu:14.04

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

ONBUILD COPY Gemfile /usr/src/app

CMD ["tail", "-f", "/dev/null"]

我运行的docker命令如下。

docker build -t copy-test .
docker run --name run-test -d copy-test
docker exec -i -t 2e9adebae0fc /bin/bash

当我使用docker exec连接到容器时,它在/usr/src/app中启动,但Gemfile不在那里。我不明白为什么mkdir和WORKDIR指令似乎有效,但ONBUILD COPY却没有。 (是的,我调用这些命令的目录确实存在Gemfile)

1 个答案:

答案 0 :(得分:8)

您必须使用COPY来构建图像。如果您的图片是构建其他图片的模板,请使用ONBUILD

请参阅Docker documentation

  

当图像用作另一个构建的基础时,ONBUILD指令向图像添加要在稍后执行的触发指令。触发器将在下游构建的上下文中执行,就好像它已经在下游Dockerfile中的FROM指令之后立即插入一样。