我在执行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)
答案 0 :(得分:8)
您必须使用COPY
来构建图像。如果您的图片是构建其他图片的模板,请使用ONBUILD
。
当图像用作另一个构建的基础时,ONBUILD指令向图像添加要在稍后执行的触发指令。触发器将在下游构建的上下文中执行,就好像它已经在下游Dockerfile中的FROM指令之后立即插入一样。