0

新版本的 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 ?

4

0 回答 0