使用dockerfile插件打包微服务镜像

概述

使用spotify的dockerfile maven插件,可以帮助我们将maven与docker进行集成,更快速的在maven构建过程中进行docker镜像的打包操作。
配置仍然是基于Dockerfile的,插件只是辅助。

请注意,插件的名称是 spotifydockerfile-maven-plugin ,而非 docker-maven-plugin

详情可访问 github页面

准备工作

首先准备一个spring-boot工程,假设工程名为playground。另外本机需要安装docker,过程都不再赘述。
本文平台为macOS12,docker在不同平台下可能有所差异。

由于dockerhub访问较慢,可以用$$先自行搭建一个socks5代理来加速访问。代理不是必须的。

export ALL_PROXY=socks5://xx.xx.xx.xx:xx

建立Dockerfile

在工程目录下新建一个Dockerfile,基于openjdk的镜像:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/playground-1.1.0.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

使用docker命令构建镜像

在使用Maven插件之前,可以试着先用docker命令来进行打包:

docker build -t="yourname/playground:latest" .

查看镜像是否生成:

docker images

然后可以使用docker push推送镜像:

docker push yourname/playground

编辑pom.xml

测试通过后,就可以在pom.xml中添加spotify插件了


   yourname


    
        
            com.spotify
            dockerfile-maven-plugin
            1.3.4
            
                ${docker.image.prefix}/${project.artifactId}
            
        
    

另外还可以添加一个execution,在maven的install生命周期自动进行build和push。


    
        default
        install
        
            build
            push
        
    

使用插件构建镜像

mvn install dockerfile:build

使用插件推送镜像

在使用dockerfile-maven-plugin推送前,需要先编辑一下~/.docker/config.json,添加用户名及密码,否则会报认证失败。

{
  "auths": {
    "https://index.docker.io/v1/": {
      "Username": "xxxxxx",
      "Secret": "xxxxxx"
    }
  },
  "credsStore": "osxkeychain"
}

然后直接运行即可:

mvn dockerfile:push

运行镜像

最后,可以使用docker run命令可以将镜像启动,在浏览器中查看一下运行情况

docker run -p 8080:8080 -t yourname/playground

使用docker logs简单查看日志

docker ps
docker logs f4d7e737f47f

你可能感兴趣的:(使用dockerfile插件打包微服务镜像)