我正在尝试执行一些自动化以构建我的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
Run Code Online (Sandbox Code Playgroud)
到这里为止,一切都很好,可以在/ tempDir / built目录中将我的打字稿成功构建为javascript。我猛扑到我的容器中,它看起来像这样:
tempDir/gulpfile.js
tempDir/typings
tempDir/src
tempDir/built
Run Code Online (Sandbox Code Playgroud)
我的下一步是将生成的文件夹移动到另一个目录,然后删除tempDir。我的问题是COPY命令无法按预期工作。
COPY built/* /data/
Run Code Online (Sandbox Code Playgroud)
我不断收到类似“无此文件或目录”或“ lstat内置/:无此文件或目录”之类的错误。我尝试了./built、./built/、built/、/tempDir/built/和其他错误。有人可以帮忙吗?
COPY
将文件从主机文件系统复制到容器中。看来您要将文件从容器中的一个目录复制到另一个目录。为此,您需要使用RUN
和cp
RUN cp -r built/* /data/
Run Code Online (Sandbox Code Playgroud)
由于将要删除/tempDir/
目录,因此可以通过重命名目录来加快速度:
RUN mv built /data
Run Code Online (Sandbox Code Playgroud)
这样,您就不必复制数据然后删除原始数据。
您正在尝试复制容器中的某些内容,因此COPY
无法工作,因为它特定于您的主机 --> 容器。
相反,您必须在容器内运行 bash 命令。
RUN cp -rf built /data/
归档时间: |
|
查看次数: |
11851 次 |
最近记录: |