如果我运行一个将 maven 依赖项拉入 .m2 存储库的docker build
,则不会保留在映像中。
因此,如果我尝试将i(tty 放入正在运行的容器中,我的~/.m2/repository
目录将为空。或者ii(如果我在第一个映像之上构建另一个映像,则必须再次下载这些 deps。
我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
我敢肯定这是我不理解的 docker 的一些简单细节。有人在那里有任何见解吗?
@khmarbaise 是的,你是对的。我只需要在我的 Dockerfile 中指定一个VOLUME /root/.m2/repository
条目。为了确定,我还删除了缓存的容器和卷。正如我所期望的那样,存储库就在那里。
所以我的 Dockerfile 现在看起来像这样。我没有对 docker 卷有一个完整的了解。但现在这一切都说得通了。谢谢。
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