我的Mac上安装了Docker Toolbox,但是我在构建期间向容器添加文件时遇到问题。我在Dockerfile中使用ADD命令。我似乎无法添加任何本地文件。我知道Docker Toolbox使用VirtualBox,但我不知道如何将这些文件放入VM来构建容器。有没有办法可以让我在没有任何绝对路径的情况下保持与操作系统无关的干净Dockerfile?
这是我的Dockerfile。它是从Node.js容器构建的,带有一些额外的依赖关系。
FROM node:4.2.2
RUN apt-get update
RUN apt-get install -y libvips-dev libgsf-1-dev libkrb5-dev
RUN apt-get clean
ADD app/ /app
RUN cd /app && npm install --production
RUN npm install forever -g
答案 0 :(得分:0)
由于docker将在Mac上使用VirtualBox VM(使用boot2docker或docker-machine),因此它将使用 VirtualBox Guest Additions ,这是为了使用VirtualBox文件夹共享的明确目的。 / p>
确保位于此类共享路径中,通常位于/Users/...
。
如果app/
位于/Users/path/to/app
,则ADD
应该有效。
您可以挂载other paths with boot2docker,但可以problematic with docker machine(请参阅issue 13)。
当然,要使ADD app ...
生效,您需要位于app/
的父文件夹中。
来自docker ADD
:
<src>
路径必须位于构建的上下文中;你不能ADD
../something /something
答案 1 :(得分:0)
原来这确实有效,但仅适用于我当前的目录。我的Dockerfile和我想添加的文件不在同一目录中。将shell移动到我想要的文件,然后手动指定Dockerfile工作。
docker build -f my/other/Dockerfile .