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