docker-compose中l(wèi)ink和external_links的區(qū)別及說(shuō)明
使用場(chǎng)景
原本把在同一個(gè)docker-compose.yml文件中的向個(gè)服務(wù)拆分為多個(gè)文件部署。
如拆分為單個(gè)服務(wù)的yml文件:原rocketmq
version: '2'
services:
namesrv:
image: apache/rocketmq:4.5.0
container_name: rmqnamesrv
ports:
- 9876:9876
volumes:
- ./data/namesrv/logs:/home/rocketmq/logs
command: sh mqnamesrv
broker:
image: apache/rocketmq:4.5.0
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- ./data/broker/logs:/home/rocketmq/logs
- ./data/broker/store:/home/rocketmq/store
- ./data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.3/conf/broker.conf
command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf
depends_on:
- namesrv
拆分后產(chǎn)生的問(wèn)題
1.depends_on 無(wú)法使用,所以改成links
2.發(fā)現(xiàn)各links無(wú)法使用
3.發(fā)現(xiàn)networks=>external無(wú)法使用
分析原因
1.depends_on 是compose獨(dú)有的功能,拆分后不在同一個(gè)yml文件內(nèi),無(wú)法繼續(xù)識(shí)別其他服務(wù)
2.links與docker run中的links不一致,也是受限于同一個(gè)yml文件內(nèi)
3.networks=>external無(wú)法使用:網(wǎng)絡(luò)創(chuàng)建有問(wèn)題,portainer的機(jī)制,使用compose創(chuàng)建自定義網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)名會(huì)被強(qiáng)加上yml文件的Title(坑)前綴
4.嘗試external_links
解決
- links改成external_links:external_links后面為其他容器的名稱(chēng)
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876
external_links:
- rmqnamesrv
- networks=>external:先手動(dòng)創(chuàng)建網(wǎng)絡(luò)
#1.手動(dòng)創(chuàng)建一個(gè)自定義網(wǎng)絡(luò) docker network create rocketmq
- 或者在portainer上創(chuàng)建

2.再填寫(xiě)網(wǎng)絡(luò)external: true信息
version: '2'
services:
broker:
image: commandcenter/public/rocketmq:latest
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- /opt/public/broker/logs:/home/rocketmq/logs
command: sh mqbroker -c ../conf/broker.conf -n rmqnamesrv:9876
external_links:
- rmqnamesrv
networks:
- rocketmq
networks:
rocketmq:
external: true
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker安裝sentinel的實(shí)現(xiàn)示例
本文主要介紹了docker安裝sentinel的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
Docker 教程之?dāng)?shù)據(jù)管理詳細(xì)介紹
這篇文章主要介紹了Docker 教程之?dāng)?shù)據(jù)管理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01
docker-compose網(wǎng)絡(luò)設(shè)置之networks的使用
本文詳細(xì)解釋了在使用 Docker Compose時(shí)如何配置網(wǎng)絡(luò),包括創(chuàng)建、使用和問(wèn)題解決等方面,介紹了如何通過(guò)docker-compose.yml文件快速編排和部署應(yīng)用服務(wù),同時(shí)解決網(wǎng)絡(luò)隔離問(wèn)題,感興趣的可以了解一下2024-10-10
PIP安裝docker-compose超時(shí)問(wèn)題解決方案
這篇文章主要介紹了PIP安裝docker-compose超時(shí)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù)的示例教程
這篇文章主要介紹了spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù),受限創(chuàng)建一個(gè)簡(jiǎn)單spring-boot-web項(xiàng)目,查看鏡像上傳倉(cāng)庫(kù)這時(shí)候有兩種解決方案,對(duì)docker鏡像上傳倉(cāng)庫(kù)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2022-12-12

