我正在尝试在构建我的 docker 镜像时执行一些自动化。下面是我在 Windows 8、Kitematic、Virtual Box 中运行的代码:

FROM node:6

# Create directory
RUN mkdir -p /tempDir && mkdir -p /tempDir/built && mkdir -p /data

# Setup build environment
COPY . /tempDir
RUN npm install -g gulp typings

# Build from source
WORKDIR /tempDir
RUN npm install && typings install && gulp build

到这里为止,一切都很好,成功将我的 typescript 构建为/tempDir/built 目录中的 javascript。我猛击我的容器,它看起来像这样:
tempDir/gulpfile.js
tempDir/typings
tempDir/src
tempDir/built

我的下一步是将此构建的文件夹移动到另一个目录,然后删除 tempDir。我的问题是 COPY 命令没有按我预期的那样工作。
COPY built/* /data/

我不断收到诸如“没有这样的文件或目录”或“lstat 内置/:没有这样的文件或目录”之类的错误。
我试过 ./built、./built/、built/、/tempDir/built/和其他仍然得到同样的错误。
任何人都可以帮助解决这个问题?

最佳答案

您正在尝试复制容器中的内容,因此 COPY 将不起作用,因为它特定于您的主机 --> 容器。

相反,您必须在容器内运行 bash 命令。
RUN cp -rf built /data/

10-07 18:38