springboot項(xiàng)目打docker鏡像實(shí)例(入門(mén)級(jí))
1.新建一個(gè)springboot項(xiàng)目
使用IDEA new 一個(gè)maven項(xiàng)目,建立最簡(jiǎn)單的項(xiàng)目結(jié)構(gòu),一個(gè)pom.xml,一個(gè)applicaion.yml,一個(gè)啟動(dòng)類(lèi),一個(gè)controller
pom.xml內(nèi)容如下:
spring-boot-starter-web依賴(lài)是spring boot web項(xiàng)目的依賴(lài)包
spring-boot-maven-plugin是springboot項(xiàng)目打jar包需要的插件,其中mainClass指定啟動(dòng)類(lèi)
<?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啟動(dòng)類(lèi):
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"; } }
然后就可以啟動(dòng)這個(gè)服務(wù)了,訪(fǎng)問(wèn)http://localhost:8080/cut :
打jar包:
在IDEA右側(cè)maven標(biāo)簽下,找到項(xiàng)目名-> lifecycle -> package,執(zhí)行,就會(huì)在target下生成項(xiàng)目的jar包。
或者在項(xiàng)目路徑下,打開(kāi)terminal,直接執(zhí)行mvn clean install ,也有同樣的效果
mvn clean install
2.編寫(xiě)Dockerfile
上面的步驟已經(jīng)生成了一個(gè)可以運(yùn)行的jar包,這一步就是如何將jar包打到docker鏡像中
- 新建一個(gè)空目錄Docker,將jar包拷貝到Docker目錄下;
- 新建一個(gè)文件Dockerfile
- 將jdk安裝包拷貝到Docker目錄下(下載url:Java Downloads | Oracle 需要注冊(cè)oracle賬戶(hù),登錄)
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 # 容器啟動(dòng)的默認(rèn)命令 CMD ["java","-jar","Forest-1.0-SNAPSHOT.jar"]
3.生成鏡像并運(yùn)行
做完上述準(zhǔn)備工作后,正式開(kāi)始打鏡像
windows打開(kāi)powershell(快捷鍵win+x),進(jìn)入Docker目錄,或者直接在目錄窗口輸入powershell
docker 打鏡像的命令為 docker build -t [name]:tag [dir],本次實(shí)例如下
docker build -t forest:1.0 .
一個(gè)自定義docker鏡像就打好了。執(zhí)行docker images查看本地當(dāng)前鏡像列表。
docker images
下面開(kāi)始運(yùn)行容器
執(zhí)行docker run, -it 表示以交互模式打開(kāi), --rm表示退出后自動(dòng)刪除容器,方便調(diào)試,-p 將本機(jī)8080端口映射到容器內(nèi)部,前面的8080是本機(jī),后面的是容器內(nèi)部端口
docker run -it --rm -p 8080:8080 forest:1.0
容器運(yùn)行后,訪(fǎng)問(wèn)服務(wù):
成功!
如果想讓容器在后臺(tái)一直跑,多加個(gè)-d參數(shù)即可。
docker run -itd --rm -p 8080:8080 forest:1.0
關(guān)于dockerfile的其他詳細(xì)參數(shù),可以參考這篇
4.將鏡像推送至dockerHub
鏡像推送至遠(yuǎn)程倉(cāng)庫(kù),團(tuán)隊(duì)其他成員就可以拉取、運(yùn)行你的鏡像
準(zhǔn)備工作:
首先,注冊(cè)dockerhub賬號(hào) https://hub.docker.com
注冊(cè)完后成登錄,新建一個(gè)倉(cāng)庫(kù),點(diǎn)擊create Rpository
名稱(chēng)隨便輸入,比如aaa, 權(quán)限設(shè)置為public
建好之后回到首頁(yè)就能看到你的倉(cāng)庫(kù)列表里有了,點(diǎn)進(jìn)去能看到倉(cāng)庫(kù)詳情,如何推送等等
開(kāi)始推送:
執(zhí)行docker tag重新將鏡像標(biāo)為docker hub提示的格式,如上圖紅框里的,tagname自定義,這里是版本號(hào)1.0
docker tag forest:1.0 bearbigk/aaaa:1.0
執(zhí)行docker login,使用賬號(hào)登錄遠(yuǎn)程倉(cāng)庫(kù),首次登錄要輸入用戶(hù)名密碼
docker login
隨后執(zhí)行docker push
docker push bearbigk/aaaa:1.0
推送進(jìn)行中,有點(diǎn)慢
推送完成后,dockerHub倉(cāng)庫(kù)中就多了一個(gè)tag。其他人執(zhí)行docker pull 就可以拉取你的鏡像了
docker pull bearbigk/aaaa:1.0
到此這篇關(guān)于springboot項(xiàng)目打docker鏡像實(shí)例(入門(mén)級(jí))的文章就介紹到這了,更多相關(guān)springboot打docker鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot打包成Docker鏡像的幾種實(shí)現(xiàn)方式
- springboot整合docker部署實(shí)現(xiàn)兩種構(gòu)建Docker鏡像方式
- Java(SpringBoot)項(xiàng)目打包(構(gòu)建)成Docker鏡像的幾種常見(jiàn)方式
- 一步步教你把SpringBoot項(xiàng)目打包成Docker鏡像
- Springboot打包為Docker鏡像并部署的實(shí)現(xiàn)
- SpringBoot打包docker鏡像發(fā)布的詳細(xì)步驟
- 將Java(SpringBoot)項(xiàng)目打包為Docker鏡像的三種方法
相關(guān)文章
解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問(wèn)題
這篇文章主要介紹了解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12JavaCV攝像頭實(shí)戰(zhàn)之實(shí)現(xiàn)口罩檢測(cè)
這篇文章主要介紹了利用JavaCV實(shí)現(xiàn)口罩檢測(cè),功能是檢測(cè)攝像頭內(nèi)的人是否帶了口罩,把檢測(cè)結(jié)果實(shí)時(shí)標(biāo)注在預(yù)覽窗口。感興趣的可以試一試2022-01-01springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼
Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開(kāi)發(fā)框架,本文主要介紹了springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03SpringBoot使用?Sleuth?進(jìn)行分布式跟蹤的過(guò)程分析
Spring Boot Sleuth是一個(gè)分布式跟蹤解決方案,它可以幫助您在分布式系統(tǒng)中跟蹤請(qǐng)求并分析性能問(wèn)題,Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟蹤的功能,本文將介紹如何在Spring Boot應(yīng)用程序中使用Sleuth進(jìn)行分布式跟蹤,感興趣的朋友一起看看吧2023-10-10SpringBoot+MySQL實(shí)現(xiàn)讀寫(xiě)分離的多種具體方案
在高并發(fā)和大數(shù)據(jù)量的場(chǎng)景下,數(shù)據(jù)庫(kù)成為了系統(tǒng)的瓶頸。為了提高數(shù)據(jù)庫(kù)的處理能力和性能,讀寫(xiě)分離成為了一種常用的解決方案,本文將介紹在Spring?Boot項(xiàng)目中實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)讀寫(xiě)分離的多種具體方案,需要的朋友可以參考下2023-06-06Struts2實(shí)現(xiàn)文件上傳時(shí)顯示進(jìn)度條功能
這篇文章主要為大家詳細(xì)介紹了Struts2實(shí)現(xiàn)文件上傳時(shí)顯示進(jìn)度條功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05