2016-09-20 56 views
1

从我所知道的,docker-machine自动将C:/Users/<username>目录安装在windows中。我可以从快速启动终端访问它作为/c/Users/<username>并对其执行各种操作。

但是,当我从Dockerfile内部命令RUN时,docker引擎根本无法识别此挂载的路径。
比如我已经activator拉链位于:窗口“C:/ Users/<username> /”目录在`docker build`命令期间不可见

/c/Users/someuser/somefolder/typesafe-activator-1.3.10.zip 

以前,我用wgetDockerfile

RUN wget https://downloads.typesafe.com/typesafe-activator/1.3.10/typesafe-ctivator-1.3.10.zip && unzip typesafe-activator-1.3.10.zip 

现在,因为我已经有这个zip文件系统,我想:

RUN cp /c/Users/someuser/somefolder/typesafe-activator-1.3.10.zip . && unzip typesafe-activator-1.3.10.zip 

,但我得到:

cp:cannot stat '/c/Users/someuser/somefolder/typesafe-activator-1.3.10.zip': No such file or directory 

任何人都知道如何从主机上的共享文件夹获取文件到docker构建过程中?

UPDATE 这里是我的完整Dockerfile

FROM openjdk:8 
ENV PROJECT_WORKPLACE /usr/src 
RUN mkdir -p $PROJECT_WORKPLACE/activator $PROJECT_WORKPLACE/build $PROJECT_WORKPLACE/app 

WORKDIR $PROJECT_WORKPLACE/activator 

COPY . typesafe-activator-1.3.10.zip 
RUN unzip typesafe-activator-1.3.10 

ENV PATH $PROJECT_WORKPLACE/activator/typesafe-activator-1.3.10/activator-dist-1.3.10/bin:$PATH 

COPY . $PROJECT_WORKPLACE/build 

WORKDIR $PROJECT_WORKPLACE/build 

RUN activator clean stage 

RUN cp -R $PROJECT_WORKPLACE/build/target/universal/stage $PROJECT_WORKPLACE/app 

EXPOSE 9000 

CMD $PROJECT_WORKPLACE/app/stage/bin/docker-play -Dhttp.port=9000 -Dlogger.file=$PROJECT_WORKPLACE/build/logger.xml 

回答

1

的RUN看到Dockerfile context

的背景是当前文件夹(其中Dockerfile是)和其子文件夹。

docker build命令从Dockerfile和上下文构建图像。
构建的上下文是指定位置PATH或URL处的文件。
PATH是本地文件系统上的一个目录。
该URL是Git存储库的位置。

递归处理上下文。所以,PATH包含任何子目录,并且URL包含存储库及其子模块。

因此,您不需要指定所有路径。

RUN cp typesafe-activator-1.3.10.zip . && unzip typesafe-activator-1.3.10.zip 

注意:你应该使用COPYADD代替RUN cp

COPY typesafe-activator-1.3.10.zip . 
RUN unzip typesafe-activator-1.3.10.zip 

在任何情况下,你需要的任何资源应该在你的Dockerfile的同一个文件夹或子文件夹。

OP egima使它与工作:

ADD typesafe-activator-1.3.10.zip . 
+0

那是完美的调整,我需要对包括资源虽然我有COPY'后'加一个期限。然而,新问题已经到来。我添加了完整的Dockerfile。在'unzip'步骤,我得到'unzip:无法找到或打开typesafe-activator-1.3.10,typesafe-activator-1.3.10.zip或typesafe-activator-1.3.10.ZIP' – egima

+0

@egima尝试添加,在'COPY'之后,'RUN pwd'和'RUN ls'可以让你知道你做了拷贝的位置。 – VonC

+0

试过,出于某种原因,用'ADD'替换'COPY',并交换周期(src)和文件名(目的地)的位置。谢谢 – egima