>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『高級篇』docker之微服務docker下的服務通訊(19)上次我們把每個服務都進行了docker化,並且確保了每個docker容器都可以運行起來,但是並沒有讓他們之間進行彼此的通信,這次就完成通信這件事。讓docker服務運行起來,並且保證他們之間的正常通信。源碼:https://github.com/limingios/msA-docker
說到讓docker彼此進行通信。
以下的三種方案,如果使用redis,zookeeper,mysql那種是最優方案呢?這裏的話我們開發的微服務使用第三種方案來做。針對redis,zookeeper,mysql使用第二種方案來做。
- 直接通信,容器的IP和端口直接訪問服務。這種方式運行的很少,因爲docker的ip不穩定,每次重新都可能發生變化。
- 服務把端口映射出去,將服務的端口映射到主機的端口上,依賴它的容器去訪問主機的ip和端口就可以了。
- 通過link的方式,link到主機後,直接通過主機的名字來進行訪問。
使用docker compose的方式
我們也可以通過命令一個一個之間進行link,但是compose得方式是一種常見的使用方式,也是最好的方案,它可以描述出來服務之間的關係,非常的清晰明瞭。
version: '3'
services:
message-thrift-python-service:
image: message-thrift-python-service:latest
user-thrift-service:
image: user-thrift-service:latest
command:
- "--mysql.address=192.168.1.130"
user-edge-service:
image: user-edge-service:latest
links:
- user-thrift-service
- message-thrift-python-service
command:
- "--redis.address=192.168.1.130"
course-dubbo-service:
image: course-dubbo-service:latest
links:
- user-thrift-service
command:
- "--mysql.address=192.168.1.130"
- "--zookeeper.address=192.168.1.130"
course-edge-service:
image: course-edge-service:latest
links:
- user-edge-service
command:
- "--zookeeper.address=192.168.1.130"
gataway-zuul:
image: gataway-zuul:latest
links:
- user-edge-service
- course-edge-service
ports:
- 8080:8080
配置這個了大概2天才配置好,太麻煩了,真的一個人如果做微服務建議放棄,太費勁。但是微服務的好處真的很明顯。
- 修改完每個微服務,都要進行build.sh
- 服務之間的調用,通過dockerlink的方式在docker-compose都進行了配置。
- 查看微服務的日誌通過docker logs 容器名稱
- docker ps 查看微服務的id
PS:三步走,服務docker化已經基本完成了,下一步創建docker倉庫。