一、簡介
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>