我正在构建一个Dockerfile,容器中的文件没有与本地存储同步。
文档:
FROM maven:3.6.1-jdk-8
ENV HOME=\wc_console
RUN mkdir $HOME
ADD . $HOME
WORKDIR $HOME
RUN mvn clean install -T 2C -DskipTests=true
RUN mvn dependency:go-offline -B --fail-never
CMD mvn clean install -T 2C -DskipTests=true我的docker build命令:
docker build -f build_maven_docker . -t wc_console_build:1.0我想使用bind-mount,因为在容器运行之后,我需要本地目录上的输出。
我的docker run命令:
docker run -v e:\svn\daffodil-dev-3.4.1\whitecoats-admin:\wc_console wc_console_build:1.0运行码头时,本地计算机中的当前工作目录是:e:\svn\daffodil-dev-3.4.1\whitecoats-admin
我在Docker容器中的工作目录:wc_console
但是,每当我运行docker容器时,它都不会将最终输出同步回我的本地目录。
我做错了什么?
文件夹可视化的图像。

发布于 2019-08-20 07:22:14
不要在Dockerfile的ENV HOME=\wc_console中使用ENV HOME=\wc_console,而是使用/wc_console。Linux使用正斜杠进行目录结构。docker run命令也是如此。变化
docker run -v e:\svn\daffodil-dev-3.4.1\whitecoats-admin:\wc_console wc_console_build:1.0
至
docker run -v e:\svn\daffodil-dev-3.4.1\whitecoats-admin:/wc_console wc_console_build:1.0
发布于 2019-08-20 07:23:59
当您挂载卷时,您实际上将/wc_console的内容替换为主机上的任何内容。
如果您想获得由maven生成的工件,那么您需要在正在运行的容器上运行maven命令,而不是作为构建过程的一部分。
当您这样做时,您也不需要在构建时将源添加到图像中。
FROM maven:3.6.1-jdk-8
ENV HOME=/wc_console
WORKDIR $HOME
# Make this part of the ENTRYPOINT if you really need it
#RUN mvn dependency:go-offline -B --fail-never
ENTRYPOINT mvn clean install -T 2C -DskipTests=true话虽如此,对于你所需要的,你甚至不需要一个Dockerfile:
docker run --rm -v e:\svn\daffodil-dev-3.4.1\whitecoats-admin:/wc_console --workdir /wc_console maven:3.6.1-jdk-8 mvn clean install -T 2C -DskipTests=truehttps://stackoverflow.com/questions/57568236
复制相似问题