Maven項目集成Docker,推送私服並運行


在日常開發過程中,會將項目進行打包,並運行到服務器上。在本文中介紹使用docker的方式,將本地jar包推送到docker私服,並運行在遠程服務器上。

步驟

  1. 新建一個maven項目,目錄結構如下:
    在這里插入圖片描述
  2. 將maven編譯打包插件、docker打包插件引入到pom文件中
    2.1. 多環境配置
    在這里插入圖片描述
    pom文件中profile下的profile.name要與application-{env} 中的{env}保持一致
    2.2. Maven編譯打包插件
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
    <configuration>
        <compilerArguments>
            <bootclasspath>${env.JAVA_HOME}\jre\lib\rt.jar;${env.JAVA_HOME}\jre\lib\jce.jar</bootclasspath>
        </compilerArguments>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <encoding>${maven.compiler.encoding}</encoding>
        <verbose/>
    </configuration>
</plugin>
<plugin>
    <!--打包跳過測試-->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven-surefire-plugin.version}</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
</plugin>

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>${maven-resources-plugin.version}</version>
    <configuration>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>woff</nonFilteredFileExtension>
            <nonFilteredFileExtension>eot</nonFilteredFileExtension>
            <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
            <nonFilteredFileExtension>svg</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

2.3. docker打包插件配置

<!-- docker打包插件 -->
<plugin>
     <groupId>io.fabric8</groupId>
     <artifactId>docker-maven-plugin</artifactId>
     <version>0.33.0</version>
     <configuration>
         <verbose>true</verbose>
         <!-- docker遠程管理url -->
         <dockerHost>tcp://ip:2375</dockerHost>

         <registry>registry.cn-hangzhou.aliyuncs.com</registry>
			
         <authConfig>
         	<!-- docker私服賬戶密碼 -->
             <push>
                 <username>zfl_aliases@163.com</username>
                 <password>123456</password>
             </push>
         </authConfig>

         <buildArgs>
             <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
         </buildArgs>
         <images>
             <image>
                 <!-- 鏡像名稱  命名空間/倉庫名稱:鏡像版本號 -->
                 <name>${docker.image.prefix}/${project.artifactId}:${project.version}</name>
                 <build>
                     <dockerFile>${project.basedir}/src/main/docker/Dockerfile</dockerFile>
                     <assembly>
                         <name>/</name>
                         <!-- artifact是預定義的值,表示將項目打包后的jar拷貝到編譯上下文中,便於Dockerfile ADD指令 -->
                         <descriptorRef>artifact</descriptorRef>
                     </assembly>
                 </build>
                 <run>
                     <!-- 運行時容器名稱 -->
                     <containerNamePattern>${project.artifactId}</containerNamePattern>
                     <extraHosts>
                         <extraHost>服務器ip</extraHost>
                     </extraHosts>
                 </run>
             </image>
         </images>
     </configuration>
 </plugin>
  1. 編寫Dockerfile
// FROM 可根據實際情況來編寫 openjdk:8
FROM registry.cn-hangzhou.aliyuncs.com/lee/jdk8-lee:1.0.0
MAINTAINER zhangfalu zfl_aliases@163.com 2021-01-25
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 8063
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Duser.timezone=GMT+08", "-jar", "/app.jar"]
  1. 打包
    命令:mvn clean package -Dmaven.skip.tests=true -P online
    查看classes下打包好的文件信息
    在這里插入圖片描述

  2. 本地測試
    在這里插入圖片描述

  3. 將本地打好的jar包,打成鏡像推動到遠程私服,並運行docker容器
    命令:mvn docker:stop docker:remove docker:build docker:push docker:start
    在這里插入圖片描述
    在這里插入圖片描述

  4. 查看私服
    在這里插入圖片描述

  5. 查看容器運行狀態
    在這里插入圖片描述

使用idea集成Docker,來本地管理鏡像的生成,刪除、容器的啟動與停止,避免使用命令。還可以更好的查看容器運行日志信息。

  1. 點擊 File-Settings
    在這里插入圖片描述
  2. 填完之后點擊apply,在開發工具下方會多出一個Docker窗口
    在這里插入圖片描述
  3. 點擊打開進行連接
    在這里插入圖片描述
    打開Containers,查看制定容器,可方便的查看容器日志
    在這里插入圖片描述

注:項目地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM