当前位置:  开发笔记 > 前端 > 正文

Docker构建的目录是什么?

如何解决《Docker构建的目录是什么?》经验,为你挑选了1个好方法。

我有一个Dockerfile,除其他指令外,还有以下内容:

FROM node:alpine
RUN cd /tmp && \
  # several lines downloading/installing packages from zips

...

ADD src/config.json /myapp/config.json

WORKDIR /myapp

这旨在从应用程序存储库的根目录运行以构建docker容器.该RUN命令提前放置,因为它获得了应用程序依赖性,并且这在逻辑上应该在该过程的早期发生.(它还将一堆命令链接在一起以保持较低的层数.)但是,该ADD命令需要与Dockerfile(存储库的根)位于同一位置.

鉴于此,有没有办法"记住"码头工具构建的起点,并使用它来定位ADD?(具体来说,在本地开发环境中运行它将whereami在构建时与构建服务器有所不同.)或者我是否坚持使用交错这些命令,首先复制配置,然后下载依赖项,等等?

当我构建时,我从我的项目的根目录(包含一个src文件夹)执行此操作:

docker build -t myapp:dev .

我得到的错误是:

lstat src/config.json:没有这样的文件或目录

如果我插入RUN pwddocker build报告它是/,但我不知道这是否是它认为它的'context'(也就是说,任何ADD命令都相对于它pwd).



1> BMitch..:

docker build命令有一个必需参数,一个上下文路径,用于发送到docker引擎以执行构建.此路径通常是单个路径.,使得结果命令看起来像docker build -t myimage:latest ..所有ADDCOPY命令都从该上下文中提取文件,在上面的示例中,docker build将使用运行该命令的当前目录.对于服务器和运行docker build命令的每个用户,他们只需要传递他们在本地计算机上的工作目录.

您可以执行的另一项更改ADDCOPY命令行为的方法是更改WORKDIR定义容器命令的相对路径,但不影响从使用build命令发送的上下文中提取文件的位置.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有