Dockerfile-maven-plugin插件的使用

在dockerfile-maven-plugin之前,其实还有一个docker-maven-plugin,但是配置相对繁琐,几乎已经不推荐了。

直接上手贴代码:

1、pom.xml文件中的核心代码:

<properties>
   <java.version>1.8</java.version>
   <docker.repo>registry.cn-hangzhou.aliyuncs.com/jgqk8s</docker.repo>
   <tag>latest</tag>
</properties>

...中间的内容就省略了,各自项目的依赖不一样...

<build>
       <finalName>test-docker-plugin</finalName>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
           <plugin>
               <groupId>com.spotify</groupId>
               <artifactId>dockerfile-maven-plugin</artifactId>
               <version>1.4.13</version>
               <configuration>
                   <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                   <repository>${docker.repo}/${project.build.finalName}</repository>
                   <tag>${tag}</tag>
               </configuration>
           </plugin>
   </plugins>
</build>

2、根目录下编写Dockerfile:

FROM openjdk:8-jre-alpine
MAINTAINER jiguiquan<jiguiquan@163.com>

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

WORKDIR /app
COPY target/test-docker-plugin.jar ./app.jar

EXPOSE 8090

ENV JVM_OPTS="-Xmx1g -Xms1g -Xss200m -XX:+UseG1GC -XX:MaxPermSize=256M -XX:ParallelGCThreads=5 -XX:ConcGCThreads=5 -XX:MaxGCPauseMillis=200"
ENTRYPOINT [ "sh", "-c", "java $JVM_OPTS -jar /app/app.jar" ]

3、因为本机没有docker,所以我使用Jenkins环境来帮助我测试,Jenkinsfile如下:

pipeline{
    agent any

    environment {
        WS = "${WORKSPACE}"
    }

    stages {
        stage("环境检查"){
            steps {
                sh 'whoami'
                sh 'echo $JAVA_HOME'
                sh 'echo $M2_HOME'
                sh 'mvn -v'
                sh 'java -version'
                sh 'docker version'
            }
        }
        stage('整体编译打包镜像') {
            steps {
                sh "echo ${WS}"
                sh "cd ${WS} && mvn clean install -DskipTests dockerfile:build dockerfile:push"
            }
        }
    }
}

4、我的TestController内容如下:

@RestController
public class TestController {
    @GetMapping("/api/test")
    public Map<String, Object> test() throws Exception{
        Map<String, Object> map = new HashMap<>();
        map.put("a",1);
        map.put("b",2.0f);
        map.put("c", true);
        map.put("d", System.currentTimeMillis());
        map.put("e", Thread.currentThread().getName());
        map.put("f", InetAddress.getLocalHost().getHostAddress());
        map.put("g", InetAddress.getLocalHost().getHostName());
        return map;
    }
}

5、然后就是测试了,我打成镜像后,是使用K8s部署的2个pod进行负载均衡:

image.png

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐