从我所知道的,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
以前,我用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构建过程中?
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
那是完美的调整,我需要对包括资源虽然我有COPY'后'加一个期限。然而,新问题已经到来。我添加了完整的Dockerfile。在'unzip'步骤,我得到'unzip:无法找到或打开typesafe-activator-1.3.10,typesafe-activator-1.3.10.zip或typesafe-activator-1.3.10.ZIP' – egima
@egima尝试添加,在'COPY'之后,'RUN pwd'和'RUN ls'可以让你知道你做了拷贝的位置。 – VonC
试过,出于某种原因,用'ADD'替换'COPY',并交换周期(src)和文件名(目的地)的位置。谢谢 – egima