這篇文章主要介紹“Docker Compose方法怎么使用”,在日常操作中,相信很多人在Docker Compose方法怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”Docker Compose方法怎么使用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出海門免費(fèi)做網(wǎng)站回饋大家。
其實(shí)在一臺(tái)開發(fā)服務(wù)器上運(yùn)行這些服務(wù)沒什么大不了的,但是對(duì)于中小型公司,往往一臺(tái)高配置開發(fā)服務(wù)器經(jīng)常被多人占用,服務(wù)嗎?少不了對(duì)外提供端口,少不了其它人的數(shù)據(jù)修改;當(dāng)然這些問題也都是小問題,比如,我服務(wù)剛才還跑的好好的,怎么忽然不能用了呢?一頓操作猛如虎.....最后發(fā)現(xiàn)系統(tǒng)一個(gè)底層依賴被卸載了,這些環(huán)境問題,看似簡單,其實(shí)排查起來非常費(fèi)勁,因?yàn)殄e(cuò)誤信息大多不在你的認(rèn)知范圍之內(nèi),要不然怎么一直有運(yùn)維都是玄學(xué)的說法呢?
另外生產(chǎn)環(huán)境已經(jīng)部署了Kubernetes平臺(tái),少不了提供鏡像,所以開發(fā)環(huán)境 docker-compose。
Docker Compose允許你在一個(gè)名為docker-compose.yml的文件中運(yùn)行一堆可以相互通信的Docker容器。編排文件如下所示:
version: "3.3"
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
java_server1:
image: java1
volumes:
- .:/app/
java_server2:
image: java2
volumes:
- .:/app/
java_server3:
image: java
volumes:
- .:/app/
web:
image: nginx
ports:
- "8777:80"
配置已經(jīng)包含在鏡像里面,有時(shí)我可能因?yàn)樾枰R時(shí)修改配置,這樣的話,我會(huì)通過進(jìn)入到容器或者把容器內(nèi)部配置掛載到宿主機(jī)上修改。
其中服務(wù)之間交互的部分我通過服務(wù)名稱調(diào)用。
通過使用docker-compose,網(wǎng)絡(luò)配置也變得非常簡單,例如我的nginx部分配置如下所示:
location ~ /java1* {
proxy_pass http://java_server1:8080;
}
location java2 {
proxy_pass http://java_server2:8081;
}
我一直在通過運(yùn)行docker-compose build來啟動(dòng)我的容器,然后運(yùn)行docker-compose up來運(yùn)行一切。
當(dāng)然有時(shí)可能只改動(dòng)了其中一個(gè)鏡像,你也可以通過使用docker-compose create java_server2
docker-compose start java_server2
單獨(dú)啟動(dòng)。
yaml文件中可以設(shè)置depends_on,以便更好地控制容器何時(shí)開始,但是對(duì)于我的服務(wù)開始順序并不重要,所以我沒有這樣做。
對(duì)于功能測(cè)試環(huán)境,部署方式跟開發(fā)環(huán)境并沒有什么區(qū)別,但是對(duì)于測(cè)試人員來說,在接入了docker-compose之后變得更爽了;假設(shè)我們已經(jīng)有一套自動(dòng)化測(cè)試腳本,每次上線之前就可以實(shí)現(xiàn)在完全獨(dú)立的環(huán)境下進(jìn)行覆蓋測(cè)試,測(cè)試完成之后直接銷毀容器即可。不用考慮數(shù)據(jù)、環(huán)境、配置等影響。特別對(duì)于中小型公司,服務(wù)不多,發(fā)布頻繁,并且接入了CI/CD持續(xù)集成持續(xù)部署的企業(yè),建議采用此種方式。
目前為止,我嘗試著用docker-compose在生產(chǎn)環(huán)境中使用這個(gè)東西。雖然我可以容忍它的啟動(dòng)速度慢的問題,但是在使用過程仍然會(huì)碰到一些問題,比如:多個(gè)容器之間啟動(dòng)的先后順序?qū)е耣ug,但是你可以采用https://github.com/vishnubob/wait-for-it
腳本,控制一個(gè)容器必須在另外一個(gè)容器完全啟動(dòng)之后再啟動(dòng);另外沒有調(diào)度、保活等功能,改來改去發(fā)現(xiàn)還不如使用shell腳本啟動(dòng)。當(dāng)然如果你只是部署一個(gè)小型網(wǎng)站、一些簡單的無狀態(tài)服務(wù),還可以考慮使用docker-compose。對(duì)于大量微服務(wù)(超過50個(gè)以上)還是建議采用Kubernetes。
到此,關(guān)于“Docker Compose方法怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!