如何安装卷来存储我的. m2存储库,这样我就不必在每次构建时下载互联网?
我的构建是一个多阶段构建:
FROM maven:3.5-jdk-8 as BUILD
COPY . /usr/src/app
RUN mvn --batch-mode -f /usr/src/app/pom.xml clean package
FROM openjdk:8-jdk
COPY --from=BUILD /usr/src/app/target /opt/target
WORKDIR /opt/target
CMD ["/bin/bash", "-c", "find -type f -name '*.jar' | xargs java -jar"]
尽管@Marek Obuchowicz的答案仍然有效,但这里有一个小的更新。
首先将此行添加到多克文件:
# syntax=docker/dockerfile:1
您可以像这样以内联方式设置DOCKER_BUILDKIT
:
DOCKER_BUILDKIT=1 docker build -t mytag .
我还建议将依赖项解析和打包阶段分开,这样您就可以充分利用Docker层缓存(如果pom.xml
没有任何变化,它将使用已下载依赖项的缓存层)。完整的Dockerfile
可以如下所示:
# syntax=docker/dockerfile:1
FROM maven:3.6.3-openjdk-17 AS MAVEN_BUILD
COPY ./pom.xml ./pom.xml
RUN --mount=type=cache,target=/root/.m2 mvn dependency:go-offline -B
COPY ./src ./src
RUN --mount=type=cache,target=/root/.m2 mvn package
FROM openjdk:17-slim-buster
EXPOSE 8080
COPY --from=MAVEN_BUILD /target/myapp-*.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar","-Xms512M","-Xmx2G","-Djava.security.egd=file:/dev/./urandom"]
你可以用Docker做到这一点
export DOCKER_BUILDKIT=1
然后,您需要启用实验性的泊坞文件前端功能,方法是将第一行添加为Dockerfile:
# syntax=docker/dockerfile:experimental
之后,您可以调用带有缓存装载的RUN命令。缓存装载在构建期间保持持久:
RUN --mount=type=cache,target=/root/.m2 \
mvn --batch-mode -f /usr/src/app/pom.xml clean package
多阶段构建 之前的做法 在 Docker 17.05 版本之前,我们构建 Docker 镜像时,通常会采用两种方式: 全部放入一个 Dockerfile 一种方式是将所有的构建过程编包含在一个 Dockerfile 中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题: 镜像层次多,镜像体积较大,部署时间变长 源代码存在泄露的风险 例如,编写 app.go 文件,该程序输出 H
Docker的口号是 Build,Ship,and Run Any App,Anywhere,在我们使用 Docker 的大部分时候,的确能感觉到其优越性,但是往往在我们 Build 一个应用的时候,是将我们的源代码也构建进去的,这对于类似于 golang 这样的编译型语言肯定是不行的,因为实际运行的时候我只需要把最终构建的二进制包给你就行,把源码也一起打包在镜像中,需要承担很多风险,即使是脚本语
为什么buildspec文件支持多个构建阶段<代码>安装、预构建、构建、后构建?如果我将所有构建步骤都放在一个阶段中,我是否做错了什么?在这些阶段,除了保持某种结构之外,还有什么非常有用的东西吗?
问题内容: 如何在中指定多阶段构建? 对于每个变体(例如dev,prod …),我都有一个包含2个docker文件的多阶段构建: 开发人员:+ 或产品:+ 文件(所有变体通用): 档案: 档案: 没有docker-compose,我可以构建为: 根据compose-file doc,我可以指定要构建的Dockerfile。 但是,如何在其中指定2个Dockerfile (用于多阶段构建)? 问题答
实战多阶段构建 Laravel 镜像 本节适用于 PHP 开发者阅读。 准备 新建一个 Laravel 项目或在已有的 Laravel 项目根目录下新建 Dockerfile .dockerignore laravel.conf 文件。 在 .dockerignore 文件中写入以下内容。 .idea/.git/vendor/node_modules/public/js/public/css/ya
FROM alpine:3.9.6 as build # 构建xlswriter扩展,根据自身需要替换版本号 ENV XLSWRITER_VERSION 1.3.4.1 RUN apk update \ && apk add --no-cache php7-pear php7-dev zlib-dev re2c gcc g++ make curl \ && curl -fs