springboot項目打docker鏡像實例(入門級)
1.新建一個springboot項目
使用IDEA new 一個maven項目,建立最簡單的項目結(jié)構(gòu),一個pom.xml,一個applicaion.yml,一個啟動類,一個controller

pom.xml內(nèi)容如下:
spring-boot-starter-web依賴是spring boot web項目的依賴包
spring-boot-maven-plugin是springboot項目打jar包需要的插件,其中mainClass指定啟動類
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bear.big</groupId>
<artifactId>Forest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<start-class>com.bear.big.Boss</start-class>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${start-class}</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>applicaiton.yml內(nèi)容如下:
server: port: 8080
Boss啟動類:
package com.bear.big;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Boss {
public static void main(String[] args) {
SpringApplication.run(Boss.class,args);
}
}
TestController如下:
package com.bear.big.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/cut")
public String cut(){
return "tree";
}
}
然后就可以啟動這個服務了,訪問http://localhost:8080/cut :

打jar包:
在IDEA右側(cè)maven標簽下,找到項目名-> lifecycle -> package,執(zhí)行,就會在target下生成項目的jar包。


或者在項目路徑下,打開terminal,直接執(zhí)行mvn clean install ,也有同樣的效果
mvn clean install

2.編寫Dockerfile
上面的步驟已經(jīng)生成了一個可以運行的jar包,這一步就是如何將jar包打到docker鏡像中
- 新建一個空目錄Docker,將jar包拷貝到Docker目錄下;
- 新建一個文件Dockerfile
- 將jdk安裝包拷貝到Docker目錄下(下載url:Java Downloads | Oracle 需要注冊oracle賬戶,登錄)

Docker目錄結(jié)構(gòu)如下:

Dockerfile內(nèi)容如下:
FROM ubuntu:18.04
LABEL author=jiyijiqi
# 安裝jdk
ADD jdk-8u311-linux-x64.tar.gz /usr/local/java
RUN ln -s /usr/local/java/jdk1.8.0_311 /usr/local/java/jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
# 工作目錄
WORKDIR /workspace
# 拷貝jar包
COPY Forest-1.0-SNAPSHOT.jar /workspace
# 聲明暴露端口
EXPOSE 8080
# 容器啟動的默認命令
CMD ["java","-jar","Forest-1.0-SNAPSHOT.jar"]3.生成鏡像并運行
做完上述準備工作后,正式開始打鏡像
windows打開powershell(快捷鍵win+x),進入Docker目錄,或者直接在目錄窗口輸入powershell

docker 打鏡像的命令為 docker build -t [name]:tag [dir],本次實例如下
docker build -t forest:1.0 .

一個自定義docker鏡像就打好了。執(zhí)行docker images查看本地當前鏡像列表。
docker images
下面開始運行容器
執(zhí)行docker run, -it 表示以交互模式打開, --rm表示退出后自動刪除容器,方便調(diào)試,-p 將本機8080端口映射到容器內(nèi)部,前面的8080是本機,后面的是容器內(nèi)部端口
docker run -it --rm -p 8080:8080 forest:1.0

容器運行后,訪問服務:

成功!
如果想讓容器在后臺一直跑,多加個-d參數(shù)即可。
docker run -itd --rm -p 8080:8080 forest:1.0
關于dockerfile的其他詳細參數(shù),可以參考這篇
4.將鏡像推送至dockerHub
鏡像推送至遠程倉庫,團隊其他成員就可以拉取、運行你的鏡像
準備工作:
首先,注冊dockerhub賬號 https://hub.docker.com
注冊完后成登錄,新建一個倉庫,點擊create Rpository

名稱隨便輸入,比如aaa, 權(quán)限設置為public

建好之后回到首頁就能看到你的倉庫列表里有了,點進去能看到倉庫詳情,如何推送等等

開始推送:
執(zhí)行docker tag重新將鏡像標為docker hub提示的格式,如上圖紅框里的,tagname自定義,這里是版本號1.0
docker tag forest:1.0 bearbigk/aaaa:1.0
執(zhí)行docker login,使用賬號登錄遠程倉庫,首次登錄要輸入用戶名密碼
docker login

隨后執(zhí)行docker push
docker push bearbigk/aaaa:1.0
推送進行中,有點慢

推送完成后,dockerHub倉庫中就多了一個tag。其他人執(zhí)行docker pull 就可以拉取你的鏡像了
docker pull bearbigk/aaaa:1.0

到此這篇關于springboot項目打docker鏡像實例(入門級)的文章就介紹到這了,更多相關springboot打docker鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題
這篇文章主要介紹了解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
JavaCV攝像頭實戰(zhàn)之實現(xiàn)口罩檢測
這篇文章主要介紹了利用JavaCV實現(xiàn)口罩檢測,功能是檢測攝像頭內(nèi)的人是否帶了口罩,把檢測結(jié)果實時標注在預覽窗口。感興趣的可以試一試2022-01-01
springboot整合easy-es實現(xiàn)數(shù)據(jù)的增刪改查的示例代碼
Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開發(fā)框架,本文主要介紹了springboot整合easy-es實現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-03-03
SpringBoot使用?Sleuth?進行分布式跟蹤的過程分析
Spring Boot Sleuth是一個分布式跟蹤解決方案,它可以幫助您在分布式系統(tǒng)中跟蹤請求并分析性能問題,Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟蹤的功能,本文將介紹如何在Spring Boot應用程序中使用Sleuth進行分布式跟蹤,感興趣的朋友一起看看吧2023-10-10
SpringBoot+MySQL實現(xiàn)讀寫分離的多種具體方案
在高并發(fā)和大數(shù)據(jù)量的場景下,數(shù)據(jù)庫成為了系統(tǒng)的瓶頸。為了提高數(shù)據(jù)庫的處理能力和性能,讀寫分離成為了一種常用的解決方案,本文將介紹在Spring?Boot項目中實現(xiàn)MySQL數(shù)據(jù)庫讀寫分離的多種具體方案,需要的朋友可以參考下2023-06-06

