我正在尝试在构建我的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
到目前为止,一切都很好,成功将我的打字稿构建到/ tempDir / built目录中的javascript。我冲进我的容器,它看起来像这样:
tempDir/gulpfile.js
tempDir/typings
tempDir/src
tempDir/built
我的下一步是将此内置文件夹移动到另一个目录,然后删除tempDir。我的问题是COPY命令不能像我预期的那样工作。
COPY built/* /data/
我继续收到错误,例如'没有这样的文件或目录'或'lstat built /:没有这样的文件或目录'。 我试过./built,./ build /,build /,/ tempDir / built /,还有其他的错误。 任何人都可以提供帮助吗?
答案 0 :(得分:4)
COPY
将文件从主机文件系统复制到容器中。看起来您想将文件从容器中的一个目录复制到另一个目录。为此,您需要使用RUN
和cp
RUN cp -r built/* /data/
由于您将删除/tempDir/
目录,因此可以通过重命名目录来加快速度:
RUN mv built /data
这样您就不必复制数据,然后删除原件。
答案 1 :(得分:1)
您正在尝试复制容器中的内容,因此COPY
无效,因为它特定于您的主机 - >容器
相反,您必须在容器内运行bash命令。
RUN cp -rf built /data/