欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot整合MongoDB的Docker開發(fā)教程全解

 更新時間:2020年07月07日 09:16:21   作者:南瓜慢說  
這篇文章主要介紹了Springboot整合MongoDB的Docker開發(fā),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值 ,需要的朋友可以參考下

1 前言

Docker是容器開發(fā)的事實標準,而SpringbootJava微服務常用框架,二者必然是會走到一起的。本文將講解如何開發(fā)Springboot項目,把它做成Docker鏡像,并運行起來。

2 把Springboot打包成Docker鏡像

SpringbootWeb開發(fā)非常簡單,本次使用之前講解過的Springboot整合MongoDB的項目,請參考

實例講解Springboot整合MongoDB進行CRUD操作的兩種方式,文章中有源碼;MongoDB的安裝請參考:用Docker安裝一個MongoDB最新版玩玩。

2.1 修改配置文件,讓容器內(nèi)部連接宿主機服務

修改Springboot的配置文件,主要是MongoDB的連接信息:

server.port=8080

spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=testdb
spring.data.mongodb.username=user
spring.data.mongodb.password=123456
spring.data.mongodb.host=host.docker.internal
spring.data.mongodb.port=27017

MongoDBhost需要修改為host.docker.internal,而不能是localhost或者127.0.0.1。因為Springboot是運行在Docker容器里面的,有網(wǎng)絡隔離。查看Dockernetwork,有以下三個,默認使用bridge,這時就無法通過localhost訪問。

$ docker network ls
NETWORK ID NAME DRIVER SCOPE
8560aacda859 bridge bridge local
2a276c0230a3 host host local
0eeb101bcf52 none null local

對于Linux,network可以切換成host模式,這可以直接使用localhost,但不建議這樣做,這相當于容器與宿主機共享網(wǎng)絡,會有風險。

對于MacWindows,如果Docker版本在v18.03或以上,就可以使用host.docker.internal。建議使用新版本,就不用考慮更早版本的方案了,哈哈。

2.2 通過Dockerfile生成鏡像

通過Dockerfile來生成鏡像是很常用的方式,必須要掌握的,文件具體內(nèi)容如下:

FROM adoptopenjdk/openjdk8-openj9
VOLUME /tmp

ARG JAR_FILE=target/springboot-mongo-0.0.1-SNAPSHOT.jar
ARG PORT=8080
ARG TIME_ZONE=Asia/Shanghai

ENV TZ=${TIME_ZONE}
ENV JAVA_OPTS="-Xms64m -Xmx256m"

COPY ${JAR_FILE} pkslow.jar

EXPOSE ${PORT}

ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -server -jar pkslow.jar

FROM:指明我們基于某個鏡像來打包,因為需要啟動Java應用,所以我們找了一個帶JDK環(huán)境的鏡像。這就非常靈活了,有非常多帶Java環(huán)境的鏡像,即使沒有合適的,也可以自己做一個;

  • ARGDockerfile構建時的參數(shù);
  • ENV:環(huán)境變量;
  • COPY:把文件復制到新的鏡像內(nèi);
  • EXPOSE:暴露端口,這樣外部才能訪問;
  • ENTRYPOINT:啟動命令。

準備好了Dockerfile后,就可以開始打包了:

$ mvn clean package
$ docker build -t pkslow/springboot-mongo:0.0.3 .
Sending build context to Docker daemon 23.43MB
Step 1/10 : FROM adoptopenjdk/openjdk8-openj9
 ......
Step 10/10 : ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -server -jar pkslow.jar
 ---> Running in a1274810851f
Removing intermediate container a1274810851f
 ---> 4a56d8e1a93e
Successfully built 4a56d8e1a93e
Successfully tagged pkslow/springboot-mongo:0.0.3

先用mavenSpringboot打成jar包,然后把jar包放到鏡像里,打成新的鏡像。

成功后查看鏡像列表:

$ docker image ls pkslow/springboot-mongo
REPOSITORY TAG  IMAGE ID CREATED SIZE
pkslow/springboot-mongo 0.0.3 4a56d8e1a93e 46 minutes ago 346MB
pkslow/springboot-mongo 0.0.2 3699f9106567 3 hours ago 346MB
pkslow/springboot-mongo 0.0.1 37a35d2af376 3 hours ago 346MB

3 啟動應用

應用Springboot前請先確保已經(jīng)成功啟動了MongoDB并創(chuàng)建好了相關用戶。

啟動應用如下:

$ docker run -d --name pkslow-springboot -p 8080:8080 pkslow/springboot-mongo:0.0.3
ee479efc132b7839cf4973c5b78164554485f733489835f8888dcc726d2e1c3f

會返回一個容器ID,可以查看其信息。

查看Docker容器運行狀態(tài),說明它正常運行:

$ docker ps -f name=pkslow*
CONTAINER ID IMAGE  COMMAND  CREATED STATUS PORTS  NAMES
ee479efc132b pkslow/springboot-mongo:0.0.3 "/bin/sh -c 'java ${…" 51 minutes ago Up 51 minutes 0.0.0.0:8080->8080/tcp pkslow-springboot

查看容器日志命令為:docker logs 容器ID,如下:

說明Springboot應用已經(jīng)正常啟動,并成功連接MongoDB。

Postman做一個簡單的測試,成功插入一條數(shù)據(jù):

4 總結

雖然案例講的是SpringbootDocker開發(fā),但其它應用也是類似的。

這是微軟關于Docker微服務的開發(fā)流程圖,大體就是應用代碼——Dockerfile——生成鏡像——容器編排服務——運行——測試——提交,前面幾步都一樣的,后面的我們將會采用Kubernetes,后續(xù)再講解。

總結

到此這篇關于Springboot整合MongoDB的Docker開發(fā)教程全解的文章就介紹到這了,更多相關Springboot整合MongoDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis使用concat函數(shù)問題

    Mybatis使用concat函數(shù)問題

    這篇文章主要介紹了Mybatis使用concat函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java將字符串轉化為數(shù)組的兩種方法

    Java將字符串轉化為數(shù)組的兩種方法

    Java中的String類是一種特殊的字符串,它可以被用于處理字符串,Java中的String類也可以將字符串轉換為數(shù)組,下面這篇文章主要給大家介紹了關于Java將字符串轉化為數(shù)組的兩種方法,需要的朋友可以參考下
    2023-05-05
  • springcloud gateway如何實現(xiàn)路由和負載均衡

    springcloud gateway如何實現(xiàn)路由和負載均衡

    這篇文章主要介紹了springcloud gateway如何實現(xiàn)路由和負載均衡的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • JVM的GC日志及運行參數(shù)解讀

    JVM的GC日志及運行參數(shù)解讀

    這篇文章主要為大家介紹了JVM的GC日志及運行參數(shù)解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 關于SpringBoot自定義條件注解與自動配置

    關于SpringBoot自定義條件注解與自動配置

    這篇文章主要介紹了關于SpringBoot自定義條件注解與自動配置,Spring Boot的核心功能就是為整合第三方框架提供自動配置,而本文則帶著大家實現(xiàn)了自己的自動配置和Starter,需要的朋友可以參考下
    2023-07-07
  • java?process.waitfor返回1的原因及解決

    java?process.waitfor返回1的原因及解決

    這篇文章主要介紹了java?process.waitfor返回1的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Kotlin 基本語法實例詳解

    Kotlin 基本語法實例詳解

    這篇文章主要介紹了Kotlin 基本語法實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • Spring Boot兩種全局配置和兩種注解的操作方法

    Spring Boot兩種全局配置和兩種注解的操作方法

    Spring Boot使用一個application.properties或者application.yaml的文件作為全局配置文件,本文重點給大家介紹Spring Boot兩種全局配置和兩種注解的配置方法,感興趣的朋友一起看看吧
    2021-06-06
  • Java?嵌入數(shù)據(jù)引擎從?SQLite?到?SPL詳解

    Java?嵌入數(shù)據(jù)引擎從?SQLite?到?SPL詳解

    這篇文章主要介紹了Java?嵌入數(shù)據(jù)引擎:從?SQLite?到?SPL,SQLite架構簡單,其核心雖然是C語言開發(fā)的,但封裝得比較好,對外呈現(xiàn)為一個小巧的Jar包,能方便地集成在Java應用中,本文給大家介紹的非常詳細,需要的朋友參考下
    2022-07-07
  • Java調取創(chuàng)藍253短信驗證碼的實現(xiàn)代碼

    Java調取創(chuàng)藍253短信驗證碼的實現(xiàn)代碼

    這篇文章主要介紹了Java調取創(chuàng)藍253短信驗證碼的實現(xiàn)代碼,需要的朋友可以參考下
    2018-04-04

最新評論