首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在本地不持久化的码头容积数据

在本地不持久化的码头容积数据
EN

Stack Overflow用户
提问于 2019-08-20 07:01:08
回答 2查看 162关注 0票数 1

我正在构建一个Dockerfile,容器中的文件没有与本地存储同步。

文档:

代码语言:javascript
复制
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命令:

代码语言:javascript
复制
docker build -f build_maven_docker . -t wc_console_build:1.0

我想使用bind-mount,因为在容器运行之后,我需要本地目录上的输出。

我的docker run命令:

代码语言:javascript
复制
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容器时,它都不会将最终输出同步回我的本地目录。

我做错了什么?

文件夹可视化的图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2019-08-20 07:23:59

当您挂载卷时,您实际上将/wc_console的内容替换为主机上的任何内容。

如果您想获得由maven生成的工件,那么您需要在正在运行的容器上运行maven命令,而不是作为构建过程的一部分。

当您这样做时,您也不需要在构建时将源添加到图像中。

代码语言:javascript
复制
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:

代码语言:javascript
复制
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=true
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57568236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档