日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

docker java镜像_Springboot整合MongoDB的Docker开发,其它应用也类似

發布時間:2023/12/10 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker java镜像_Springboot整合MongoDB的Docker开发,其它应用也类似 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 前言

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

2 把Springboot打包成Docker鏡像

Springboot的Web開發非常簡單,本次使用之前講解過的Springboot整合MongoDB的項目,請參考《實例講解Springboot整合MongoDB進行CRUD操作的兩種方式》,文章中有源碼;MongoDB的安裝請參考:《【MongoDB】用Docker安裝一個MongoDB最新版玩玩》。

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

修改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

MongoDB的host需要修改為host.docker.internal,而不能是localhost或者127.0.0.1。因為Springboot是運行在Docker容器里面的,有網絡隔離。查看Docker的network,有以下三個,默認使用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,但不建議這樣做,這相當于容器與宿主機共享網絡,會有風險。

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

2.2 通過Dockerfile生成鏡像

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

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環境的鏡像。這就非常靈活了,有非常多帶Java環境的鏡像,即使沒有合適的,也可以自己做一個;
  • ARG:Dockerfile構建時的參數;
  • ENV:環境變量;
  • COPY:把文件復制到新的鏡像內;
  • 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

先用maven將Springboot打成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前請先確保已經成功啟動了MongoDB并創建好了相關用戶。

啟動應用如下:

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

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

查看Docker容器運行狀態,說明它正常運行:

$?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應用已經正常啟動,并成功連接MongoDB。

用Postman做一個簡單的測試,成功插入一條數據:

4 總結

雖然案例講的是Springboot的Docker開發,但其它應用也是類似的。

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


歡迎訪問南瓜慢說 www.pkslow.com獲取更多精彩文章!

歡迎關注微信公眾號<南瓜慢說>,將持續為你更新...

多讀書,多分享;多寫作,多整理。

總結

以上是生活随笔為你收集整理的docker java镜像_Springboot整合MongoDB的Docker开发,其它应用也类似的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。