天天看點

CentOS7 docker部署springboot項目(兩種方式)

首先,使用現在主流的IDE Idea建立一個最簡單的springboot項目。

比如随便帶有一個​​

​@RestController​

​​的 ​

​public String test1(){}​

​ 的方法。使之可通路即可。

需要一點預備知識,如 linux基本操作、docker安裝及基本操作、docker鏡像位址配置(否則下載下傳會特别慢)、java 或 mvn指令啟動springboot項目等,懂的人自然懂。

兩種方式,第一種方式成功了,有助于了解和運用第二種方式。

第一種,不依賴docker插件,手動部署springboot到docker

思路描述:

  1. 準備jar檔案(注意必要的yml之類的配置檔案要打包到jar檔案中)

IDEA建立一個springboot項目

産生jar檔案用于釋出

備用

  1. 在伺服器上安裝docker服務,啟動。
  2. CentOS7 docker部署springboot項目(兩種方式)
  3. 将第1步中的jar檔案上傳到伺服器中,然後使用docker指令産生鏡像。

3.1 準備檔案

如下圖,圖中劃線内容是我傳上去的,分别給了​

​chmod +x xxx​

​權限。

CentOS7 docker部署springboot項目(兩種方式)

​Docfile内容如下:​

FROM java:8
# VOLUME 指定了臨時檔案目錄為/tmp。
# 其效果是在主機 /var/lib/docker 目錄下建立了一個臨時檔案,并連結到容器的/tmp
VOLUME /tmp 
# 将jar包添加到容器中并更名為app.jar
ADD wtf.jar app.jar 
ENTRYPOINT ["java","-jar","/app.jar"]        

3.2 然後​

​docker build生成新的鏡像​

​​

CentOS7 docker部署springboot項目(兩種方式)

​docker build -t wtf2 .​

​ 注意指令裡有個點.

  1. docker啟動此鏡像,指定好端口,同時記得處理伺服器的端口開放問題。

    ​​

    ​docker run -p 8080:8080 wtf2​

    ​ 如下圖:
  2. CentOS7 docker部署springboot項目(兩種方式)
  3. 然後直接通路對應接口位址即可。

第二種,依賴docker插件,從IDEA直接将springboot項目部署到docker

這裡面說得不是很詳細,隻要說思路。

不贅述的要點:

  1. docker 開啟遠端通路。
  2. idea安裝docker插件,并配置。
  1. 本地的idea的spring boot簡單項目,可以maven clean,可以package生成 jar 檔案。(同樣地,注意properties或yml等檔案的打包問題)。細節略。
  2. docker伺服器開始遠端通路,idea安裝docker插件并配置,使idea中可以看到docker伺服器中的image和container。如下圖
  3. CentOS7 docker部署springboot項目(兩種方式)
  4. 開始配置此springboot項目中的Dockerfile檔案,特别注意是在根目錄下。我的就是因為層級不對,總是提示找不到檔案的。
  5. CentOS7 docker部署springboot項目(兩種方式)
  6. Dockerfile 檔案内容:
FROM java:8
VOLUME /tmp
ADD target/wtf8081.jar wtf8081.jar
ENTRYPOINT ["java","-jar","wtf8081.jar"]      
  1. 然後在此springboot項目的pom.xml檔案的裡面添加如下内容:
<plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <!--将插件綁定在某個phase執行-->
        <executions>
          <execution>
            <id>build-image</id>
            <!--将插件綁定在package這個phase上。也就是說,使用者隻需執行mvn package ,就會自動執行mvn docker:build-->
            <phase>package</phase>
            <goals>
              <goal>build</goal>
            </goals>
          </execution>
        </executions>
        <configuration>

          <!-- 指定 Dockerfile 路徑 ${project.basedir}:項目根路徑下-->
          <dockerDirectory>${project.basedir}</dockerDirectory>
          <!--指定遠端 docker api位址-->
          <dockerHost>http://192.168.182.245:2375</dockerHost>
          <!-- 這裡是複制 jar 包到 docker 容器指定目錄配置 -->
          <resources>
            <resource>
              <targetPath>/</targetPath>
              <!--jar 包所在的路徑 此處配置的 即對應 target 目錄-->
              <directory>${project.build.directory}</directory>
              <!-- 需要包含的 jar包 ,這裡對應的是 Dockerfile中添加的檔案名 -->
              <include>${project.build.finalName}.jar</include>
            </resource>
          </resources>
          <!-- 以下兩行是為了docker push到DockerHub使用的。 -->
          <serverId>docker-hub</serverId>
          <registryUrl>https://index.docker.io/v1</registryUrl>
        </configuration>
      </plugin>      
  1. 項目中啟動項設定為 dockerfile 啟動。如下圖。
  2. CentOS7 docker部署springboot項目(兩種方式)
  3. 然後在docker 插件裡,就可以推送檔案、生成鏡像、啟動容器。最終成功釋出。
  4. CentOS7 docker部署springboot項目(兩種方式)

繼續閱讀