使用Docker部署java web應(yīng)用
問(wèn)題描述
假設(shè)我們我需要的組件有:nginx tomcat webapp redis
我們的操作系統(tǒng)是debain
nginx是一個(gè)容器tomcat webapp是一個(gè)容器redis一個(gè)容器....然后把這些容器整合,完成部署
疑惑的是端口之間如何訪問(wèn)?數(shù)據(jù)庫(kù)文件在哪?各容器之間文件是否可以共享?
沒(méi)有使用過(guò)Docker 不知道思想是否正確,求各位大俠解惑
問(wèn)題解答
回答1:1、你完全可以把docker當(dāng)成虛擬機(jī)來(lái)使用,這樣至少使用上不會(huì)有什么學(xué)習(xí)成本。無(wú)非是把虛擬機(jī)里面的一些操作步驟寫(xiě)成了Dockerfile讓docker自動(dòng)配置,更加清晰明了。但是有些操作和配置步驟在普通方式的安裝下可能比較難實(shí)現(xiàn),需要借鑒docker hub上別人的寫(xiě)法。在這種方式下,端口之間的訪問(wèn)和文件共享不成問(wèn)題;數(shù)據(jù)庫(kù)文件可以放在容器里面,也可以通過(guò)VOLUME的方式從本地文件系統(tǒng)掛載到容器里面。2、使用docker來(lái)搭建微服務(wù),也就是分成不同的容器來(lái)組成一個(gè)大服務(wù)的內(nèi)部服務(wù)。這種情況下端口之間的訪問(wèn)可以通過(guò)run時(shí)指定--link參數(shù)指定某臺(tái)容器;數(shù)據(jù)庫(kù)文件通過(guò)-v(--volume)的方式指定從本地某個(gè)目錄掛載到容器里面;容器文件之間的共享通過(guò)指定某個(gè)文件夾為VOLUME就可以共享,本質(zhì)上還是把本地文件系統(tǒng)的目錄掛載到多個(gè)容器中而已。3、如果真要使用微服務(wù)的話,你需要了解一下docker-compose這個(gè)技術(shù),幫助你管理各個(gè)組件,你只要把容器的run配置寫(xiě)在yml文件里就行了。
回答2:我的是mysql tomcat fastdfs mysql 用-p 映射3306端口tomcat 8080 fastdfs 改成8081了 主機(jī)ip為10.0.15.4 所以在tomcat項(xiàng)目的配置就是連接10.0.15.4 / 3306 / 8081 就行了, 然后iptables 開(kāi)放dokcer 容器網(wǎng)段可以訪問(wèn)host
如果有nginx的話, 直接在nginx轉(zhuǎn)發(fā)到tomcat的8080就行了
回答3:docker-compose,docker服務(wù)編排.
回答4:如果你用到的所有組件都是為一個(gè)應(yīng)用服務(wù),建議使用Docker編排工具,如官方提供的Compose。容器間的文件和數(shù)據(jù)可以共享,通過(guò)數(shù)據(jù)卷掛載即可實(shí)現(xiàn);容器間的連接最方便的是通link參數(shù)進(jìn)行連接,這會(huì)在兩個(gè)容器間建立專用通道,避免了數(shù)據(jù)端口對(duì)外開(kāi)放造成的安全隱患。如果你要做的話,還是建議你先把最基礎(chǔ)的東西熟悉一下,挺有意思的。
相關(guān)文章:
1. docker images顯示的鏡像過(guò)多,狗眼被亮瞎了,怎么辦?2. javascript - Web微信聊天輸入框解決方案3. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒(méi)有反應(yīng)4. docker - 如何修改運(yùn)行中容器的配置5. javascript - log4js的使用問(wèn)題6. javascript - 移動(dòng)端textarea不能上下滑動(dòng),該怎么解決?7. javascript - 為什么form表單提交沒(méi)有跨域問(wèn)題,但ajax提交有跨域問(wèn)題?8. javascript - history.replaceState()無(wú)法改變query參數(shù)9. javascript - 為什么這個(gè)點(diǎn)擊事件需要點(diǎn)擊兩次才有效果10. javascript - Ajax加載Json時(shí),移動(dòng)端頁(yè)面向左上角縮小一截兒,加載完成后才正常顯示,這該如何解決?
