如何在Docker构build中使用COPY命令?
我正在尝试执行一些自动化,同时build立我的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
我的下一步是将这个构build的文件夹移动到另一个目录,然后删除tempDir。 我的问题是COPY命令不能按我的预期工作。
COPY built/* /data/
我一直在得到像'没有这样的文件或目录'或'lstat内置/:没有这样的文件或目录'的错误。 我试过./built,./built/,built /,/ tempDir / built /,还有其他的仍然得到相同的错误。 任何人都可以帮忙吗?
你正试图复制你的容器中的东西,所以COPY
将无法工作,因为它是特定于你的主机 – >容器。
相反,你将不得不在你的容器中运行一个bash命令。
RUN cp -rf built /data/
COPY
将主机文件系统中的文件复制到容器中。 它看起来像你想从容器中的一个目录复制文件到另一个。 为此你需要使用RUN
和cp
RUN cp -r built/* /data/
由于您将删除/tempDir/
目录,您可以通过重命名该目录来加快速度:
RUN mv built /data
这样,您不必复制数据,然后删除原件。