『高級篇』docker之微服務docker下的服務通訊(19)
阿新 • • 發佈:2019-02-05
docker倉庫 正常 訪問 ESS ddr course lin edi ports
>原創文章,歡迎轉載。轉載請註明:轉載自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倉庫。
『高級篇』docker之微服務docker下的服務通訊(19)