新版本的 kubernetes 没有 docker,所以我们不能在带有 docker 插件的 docker 中使用 Jenkins docker:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<imageName>${docker.image.name}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>${basedir}/target/dockerfile</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
使用 dockerfile:
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
使用 kaniko 构建 Spring Boot 应用程序映像的正确方法是什么?
我知道 kaniko 支持几个上下文,但我不确定 Spring Boot 应用程序最好的是什么。使用 git,您仍然需要构建所有依赖项,然后构建主应用程序,使用本地 dir/tar,您可以使用相同的 dockerfile,但您仍然需要以某种方式将存档复制到 kaniko 中的挂载卷
我尝试了这个成功将图像推送到注册表的 kaniko pod
apiVersion: v1
kind: Pod
metadata:
name: kaniko
spec:
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:latest
args: ["--dockerfile=/Dockerfile",
"--context=dir:///workspace",
"--destination=registry/image:version",
"--skip-tls-verify"]
volumeMounts:
- name: data
mountPath: /workspace
restartPolicy: Never
volumes:
- name: data
hostPath:
path: /workspace/
type: Directory
但在此之前,我需要手动将 Dockerfile 和 jar 复制到挂载的卷。有没有更好的方法可以使用 kaniko ?