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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

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

1 前言

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

2 把Springboot打包成Docker鏡像

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

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

修改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是運(yùn)行在Docker容器里面的,有網(wǎng)絡(luò)隔離。查看Docker的network,有以下三個,默認(rèn)使用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,但不建議這樣做,這相當(dāng)于容器與宿主機(jī)共享網(wǎng)絡(luò),會有風(fēng)險。

對于Mac和Windows,如果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應(yīng)用,所以我們找了一個帶JDK環(huán)境的鏡像。這就非常靈活了,有非常多帶Java環(huán)境的鏡像,即使沒有合適的,也可以自己做一個;
  • ARG:Dockerfile構(gòu)建時的參數(shù);
  • ENV:環(huán)境變量;
  • COPY:把文件復(fù)制到新的鏡像內(nèi);
  • EXPOSE:暴露端口,這樣外部才能訪問;
  • ENTRYPOINT:啟動命令。

準(zhǔn)備好了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 啟動應(yīng)用

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

啟動應(yīng)用如下:

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

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

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

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

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

4 總結(jié)

雖然案例講的是Springboot的Docker開發(fā),但其它應(yīng)用也是類似的。

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


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

歡迎關(guān)注微信公眾號<南瓜慢說>,將持續(xù)為你更新...

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。