docker maven部署


一、简介

  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>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM