windows“C:/ Users / <username> /”目录在`docker build`命令期间不可见

时间:2016-09-20 08:20:04

标签: linux windows docker

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

但是当RUN来自Dockerfile内的命令时,泊坞引擎根本无法识别此安装路径。
例如,我有activator zip位于:

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

以前,我在wget使用Dockerfile

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构建过程中?

更新 这是我的完整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 个答案:

答案 0 :(得分: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 .
相关问题