日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • 前言
  • 一、背景環境
  • 二、打包方式(三種)
    • 1. 在idea環境里打包方式一
    • 2. 在idea環境里打包方式二
    • 3. 基本打包方式
  • 三、啟動服務
    • 四、總結

      前言

      本文章記錄了 spring boot項目 打包成docker鏡像到 遠程服務器上并啟動服務 總共三種方式,對于簡單應用推薦第一種,以及相關過程中相關問題的解決方案

      一、背景環境

      1、本示例項目是一個基礎的springboot項目,提供的是 eureka服務

      2、在idea里能正常啟動

      3、服務器是阿里云服務

      4、代碼地址 https://gitee.com/patronli/eureka

      二、打包方式(三種)

      1. 在idea環境里打包方式一

      1.1、第一步(環境配置)

      先在docker服務所在的服務器 編輯docker文件

      1、編輯 vim /usr/lib/systemd/system/docker.service
             ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
       
      2、保存后 刷新docker 
          systemctl daemon-reload  
          systemctl start docker  
       
      3、測試 
          輸入netstat -anp|grep 2375 會顯示docker正在監聽2375端口
          輸入curl 127.0.0.1:2375/info  如果有顯示信息,則表明已經生效

      效果如下

      詳解java項目打包docker鏡像的幾種方式

      1.2、第二步(代碼配置)

      <build>
      <plugins>
          <!--啟動入口、添加maven依賴-->
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
              <configuration>
                  <!-- 指定該Main Class為全局的唯一入口 -->
                  <mainClass>com.xuanqing.controller.EurekaApplication</mainClass>
                  <layout>ZIP</layout>
              </configuration>
              <executions>
                  <execution>
                      <goals>
                          <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中-->
                      </goals>
                  </execution>
              </executions>
          </plugin>
          <!-- 打包到 docker 服務-->
          <plugin>
              <groupId>com.spotify</groupId>
              <artifactId>docker-maven-plugin</artifactId>
              <configuration>
                  <imageName>${project.name}:${project.version}</imageName>
                  <baseImage>java</baseImage>
                  <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                  <dockerHost>http://ip:2375</dockerHost> <!--docker 服務地址-->
                  <resources>
                      <resource>
                          <targetPath>/</targetPath>
                          <directory>${project.build.directory}</directory>
                          <include>${project.build.finalName}.jar</include>
                      </resource>
                  </resources>
              </configuration>
          </plugin>
      </plugins>
      </build>

      1.3、第三步(啟動)

      輸入mvn clean package docker:build -DskipTests,如下所示

      詳解java項目打包docker鏡像的幾種方式

      此時就可以在遠程服務器上看到相關鏡像,如下所示

      詳解java項目打包docker鏡像的幾種方式

      啟動 相關的 知識請看 第三步

      2. 在idea環境里打包方式二

      1.1、第一步(環境配置)

      先在docker服務所在的服務器 編輯docker文件

      1、編輯 vim /usr/lib/systemd/system/docker.service
             ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
       
      2、保存后 刷新docker 
          systemctl daemon-reload  
          systemctl start docker  
       
      3、測試 
          輸入netstat -anp|grep 2375 會顯示docker正在監聽2375端口
          輸入curl 127.0.0.1:2375/info  如果有顯示信息,則表明已經生效

      效果如下

      詳解java項目打包docker鏡像的幾種方式

      1.2、第二步(代碼配置)

       這個方式需要配置一個DockerFile文件,如下圖示例

      詳解java項目打包docker鏡像的幾種方式

      具體pom.xml的配置

      <build>
      <plugins>
          <!--啟動入口、添加maven依賴-->
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
              <configuration>
                  <!-- 指定該Main Class為全局的唯一入口 -->
                  <mainClass>com.xuanqing.controller.EurekaApplication</mainClass>
                  <layout>ZIP</layout>
              </configuration>
              <executions>
                  <execution>
                      <goals>
                          <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中-->
                      </goals>
                  </execution>
              </executions>
          </plugin>
          <!-- 打包到 docker 服務-->
          <plugin>
              <groupId>com.spotify</groupId>
              <artifactId>docker-maven-plugin</artifactId>
              <configuration>
                  <imageName>${project.name}:${project.version}</imageName>
                  <!--DockerFile目錄,當前為根目錄-->
                  <dockerDirectory>${project.basedir}</dockerDirectory>
                  <dockerHost>http://ip:2375</dockerHost>
                  <resources>
                      <resource>
                          <targetPath>/</targetPath>
                          <directory>${project.build.directory}</directory>
                          <include>${project.build.finalName}.jar</include>
                      </resource>
                  </resources>
              </configuration>
          </plugin>
      </plugins>
      </build>

      1.3、第三步(DockerFile配置)

      # Docker image for springboot file run
      # VERSION 0.0.1
      # Author: patronli
      # 基礎鏡像使用java
      FROM java:8
      # 作者
      MAINTAINER patronli <[email protected]>
      # VOLUME 指定了臨時文件目錄為/tmp。
      # 其效果是在主機 /var/lib/docker 目錄下創建了一個臨時文件,并鏈接到容器的/tmp
      VOLUME /tmp
      # 將jar包添加到容器中并更名為eureka.jar
      ADD eureka-1.0-SNAPSHOT.jar eureka.jar  #前者為打包的文件 后者為修改后的自定義名字
      # 運行jar包
      RUN bash -c 'touch /eureka.jar'
      ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka.jar"]

      1.3、第四步(啟動)

      輸入mvn clean package docker:build -DskipTests,如下所示

      詳解java項目打包docker鏡像的幾種方式

      此時就可以在遠程服務器上看到相關鏡像,如下所示

      詳解java項目打包docker鏡像的幾種方式

      啟動 相關的 知識請看 第三步

      3. 基本打包方式

      自己把項目打包成jar,編寫DockerFile文佳上傳到 服務器,如下圖所示

      詳解java項目打包docker鏡像的幾種方式

      打包鏡像 命令 docker build -t xxx .   

      xxx是鏡像標簽信息 自定義,注意xxx后有一個 .

      啟動 相關的 知識請看 第三步

      三、啟動服務

       先查看鏡像 docker images

       查看是否啟動 docker ps

       啟動之后 在docker ps里面沒看到的話 用docker ps -a 看

       啟動 docker run -d -p 1001:1001 –name eureka 410e092b53e0 

      (1001端口號我這里偏好 原本項目的端口 ) eureka為自定義的啟動的名稱 有意義就好  410e092b53e0 為鏡像的鏡像id

      詳解java項目打包docker鏡像的幾種方式

      四、總結

      啟動鏡像如果 有返回id,但是執行docker ps 并沒有看到服務,說明啟動有問題,執行 docker logs xxx 查看問題

      常見問題如下

      詳解java項目打包docker鏡像的幾種方式

      no main manifest attribute, in /eureka-1.0-SNAPSHOT.jar 對于這個問題,需要增加配置

       <!--啟動入口、添加maven依賴-->
              <plugin>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-maven-plugin</artifactId>
                  <configuration>
                      <!-- 指定該Main Class為全局的唯一入口 -->
                      <mainClass>com.xuanqing.controller.EurekaApplication</mainClass>
                      <layout>ZIP</layout>
                  </configuration>
                  <executions>
                      <execution>
                          <goals>
                              <goal>repackage</goal><!--可以把依賴的包都打包到生成的Jar包中-->
                          </goals>
                      </execution>
                  </executions>
              </plugin>

      查看日志 docker logs xxx,xxx是啟動時返回的id

      刪除鏡像 docker rmi IMAGE ID,如果刪不掉 需要執行 docker ps -a 查看未啟動成功的鏡像 使用docker rm CONTAINER ID

      分享到:
      標簽:幾種 打包 方式 詳解 鏡像
      用戶無頭像

      網友整理

      注冊時間:

      網站:5 個   小程序:0 個  文章:12 篇

      • 51998

        網站

      • 12

        小程序

      • 1030137

        文章

      • 747

        會員

      趕快注冊賬號,推廣您的網站吧!
      最新入駐小程序

      數獨大挑戰2018-06-03

      數獨一種數學游戲,玩家需要根據9

      答題星2018-06-03

      您可以通過答題星輕松地創建試卷

      全階人生考試2018-06-03

      各種考試題,題庫,初中,高中,大學四六

      運動步數有氧達人2018-06-03

      記錄運動步數,積累氧氣值。還可偷

      每日養生app2018-06-03

      每日養生,天天健康

      體育訓練成績評定2018-06-03

      通用課目體育訓練成績評定