【问题标题】:Docker ONBUILD COPY doesn't seem to copy filesDocker ONBUILD COPY 似乎没有复制文件
【发布时间】:2016-10-15 07:53:57
【问题描述】:

我在执行 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)

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

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

    见Docker documentation:

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

    【讨论】:

    • 这行得通。如果我从第一个图像构建第二个图像,我也可以使用 ONBUILD。第二个图像 dockerfile 仅包含 FROM <image-id>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多