在docker build

时间:2017-07-30 11:50:52

标签: maven docker dockerfile

如果我运行一个将maven依赖项下拉到.m2存储库的docker build,那么它不会在映像中保留。

因此,如果我尝试 i) tty进入正在运行的容器,我的~/.m2/repository目录将为空。或者 ii)如果我在第一个图像之上构建另一个图像,则必须再次下载这些图像。

Dockerfile的内容就在这里。

FROM maven:3.5.0-jdk-8-alpine

RUN apk update \
    && apk add ca-certificates \
    && update-ca-certificates \
    && apk add openssl \
               bash \
               git

WORKDIR /app
COPY . /app

RUN mvn compile 

我确定这是码头工人的一些简单细节,我不理解。有人有任何见解吗?

1 个答案:

答案 0 :(得分:1)

@khmarbaise是的,你是对的。我只需在Dockerfile中指定一个VOLUME /root/.m2/repository条目。我还删除了缓存的容器和卷,只是为了确定。并且陛下,存储库就在那里,正如我所料。

所以我的Dockerfile现在看起来像这样。我没有完整的码头工作量。但这一切现在都有意义。谢谢。

FROM maven:3.5.0-jdk-8-alpine

RUN apk update \
    && apk add ca-certificates \
    && update-ca-certificates \
    && apk add openssl \
               bash \
               git

WORKDIR /app
COPY . /app
VOLUME /root/.m2/repository

RUN mvn compile