docker-compose中l(wèi)ink和external_links的區(qū)別及說明
使用場景
原本把在同一個docker-compose.yml文件中的向個服務(wù)拆分為多個文件部署。
如拆分為單個服務(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)生的問題
1.depends_on 無法使用,所以改成links
2.發(fā)現(xiàn)各links無法使用
3.發(fā)現(xiàn)networks=>external無法使用
分析原因
1.depends_on 是compose獨(dú)有的功能,拆分后不在同一個yml文件內(nèi),無法繼續(xù)識別其他服務(wù)
2.links與docker run中的links不一致,也是受限于同一個yml文件內(nèi)
3.networks=>external無法使用:網(wǎng)絡(luò)創(chuàng)建有問題,portainer的機(jī)制,使用compose創(chuàng)建自定義網(wǎng)絡(luò)時,網(wǎng)絡(luò)名會被強(qiáng)加上yml文件的Title(坑)前綴
4.嘗試external_links
解決
- links改成external_links:external_links后面為其他容器的名稱
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876
external_links:
- rmqnamesrv
- networks=>external:先手動創(chuàng)建網(wǎng)絡(luò)
#1.手動創(chuàng)建一個自定義網(wǎng)絡(luò) docker network create rocketmq
- 或者在portainer上創(chuàng)建

2.再填寫網(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é)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
DockerToolBox文件掛載的實(shí)現(xiàn)代碼
這篇文章主要介紹了DockerToolBox文件掛載的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
IDEA中進(jìn)行Docker項(xiàng)目部署的實(shí)現(xiàn)步驟
這篇文章主要介紹了IDEA中進(jìn)行Docker項(xiàng)目部署的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Docker安裝部署分布式數(shù)據(jù)庫?OceanBase的詳細(xì)過程
這篇文章主要介紹了Docker安裝部署分布式數(shù)據(jù)庫?OceanBase,快速的體驗(yàn) OceanBase 的自動化部署過程,及了解 OceanBase 集群安裝成功后的目錄特點(diǎn)和使用方法,需要的朋友可以參考下2022-06-06
Docker 倉庫管理和Docker Dockerfile詳解
倉庫(Repository)是集中存放鏡像的地方,以下介紹一下 Docker Hub,當(dāng)然不止 docker hub,只是遠(yuǎn)程的服務(wù)商不一樣,操作都是一樣的,對Docker 倉庫管理相關(guān)知識感興趣的朋友一起看看吧2023-11-11
docker compose 安裝 minio 文件服務(wù)器的流程
這篇文章主要介紹了docker compose安裝minio文件服務(wù)器的流程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-06-06
Docker網(wǎng)絡(luò)IP地址沖突的解決方法
本文主要介紹了Docker網(wǎng)絡(luò)IP地址沖突的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

