一、简介
docker-maven-plugin 插件帮助我们在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中。
configuration下参数讲解:
dockerDirectory : 指定 Dockerfile 路径
resources :这里是复制 jar 包到 docker 容器指定目录配置,也可以写到 Docokerfile 中
imageName :镜像名称,也可以通过加上仓库地址,直接push到仓库 ,例如 : 私服地址/命名空间/仓库:版本
serverId :Docker仓库需要安全认证,登录完成以后才可以进行操作。可以在 setting.xml 中增加server的配置,里面配置用户名、密码。然后通过id找到相关配置,进行自动登录
forceTags :默认false,build时是否强制覆盖tag,配合imageTags使用
noCache :默认false,build时不适用缓存
pullOnBuild :默认false,build时,是否重新拉取基础镜像
pushImage :默认false,build完成后是否push镜像
pushImageTag :默认false,build完成后是否push指定tag的镜像,配合imageTags使用
retryPushCpuint :push镜像失败,重试次数,默认5次
retryPushTimeout :push镜像失败,重试时间
rm :默认false ,build结束后,是否删除中间容器
二、使用Dockerfile构建镜像
1、maven setting.xml添加server配置
<servers> <server> <id>my-docker-registry</id> <username>levi.liu</username> <password>test</password> <configuration> <email>levi.liu@snowballtech.com</email> </configuration> </server> </servers>
2、添加Dockerfile文件,路径 src/main/docker
FROM registry.cn-shanghai.aliyuncs.com/snowballtech/snbbaseimage:v2
MAINTAINER SMALLT.TANG "levi.liu@snowballtech.com"
ENV WORK_PATH /home/app
ENV APP_NAME @project.build.finalName@.@project.packaging@
ENV APP_VERSION @project.version@
ENV JAVA_OPTS="\
-server \
-Xmx1024m \
-Xms1024m"
ENV TZ=Asia/Shanghai
ENV active env
ENV mode env
ENV agentId env
VOLUME ["/usr/snowball/logs/cloud"]
ADD ./base_user.jar app.jar
EXPOSE 8080
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT /run.sh "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom" "$mode" "@project.artifactId@" "$agentId" "$active"
3、添加 docker-maven-plugin 插件
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.12</version> <configuration> <imageName> ${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version} </imageName> <dockerDirectory>target/docker</dockerDirectory> <serverId>my-docker-registry</serverId> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>