docker-swarm建立本地整合開發環境
阿新 • • 發佈:2018-12-10
在k8s出現之後,docker-swarm使用的人越來越少,但在本地整合開發環境的搭建上,使用它還是比較輕量級的,它比docker-compose最大的好處就是容器之間的共享和服務的治理,你不需要links容器,也不知道關心失敗之後的重啟,這些都於swarm來實現。
對於docker-compose和docker-swarm的分工
- docker-compose用來進行映象的編排,同時將多個相關映象構建
- docker-swarm用來啟動和管理容器,它不能構建映象
建立compose檔案,不支援build,links,depends_on
services: db: image: arungupta/couchbase:latest ports: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210
swarm初始化
docker swarm init
建立服務
docker stack deploy --compose-file=docker-compose-swarm.yml lind
檢視所有服務列表
docker stack ls
檢視指定服務
docker stack services lind
更新某個服務
docker service update lind_service1 //有時我們的lind_service1依賴於configserver,當後者沒有重啟動,前者會一直報錯,然後使用預設的配置,由於預設配置為localhost,所以就出現了連線失敗的情況
刪除服務
docker stack rm lind
痛點
configserver是比較低層的服務,所有專案的配置都來自於這個服務,我們拿eureka配置為例,如果專案從配置中心拿不到它的配置,會使用預設的localhost:8761做為連線地址,這在某些不是localhost:8761的環境下,這簡直就成了災難。
配置中心使用本地倉庫
配置中心的配置檔案一般儲存在git遠端,而如果太依賴遠端也不是好事 ,你可以把倉庫下載到本地,然後掛載到容器目錄即可,但在進行操作時也有一些需要注意的點:
- 配置中心的目錄必須是git倉庫,預設是master分支
- 使用docker-comopse部署時,使用volumes把宿主目錄掛載到容器目錄,例如固定為config_repo,它可以在yml檔案裡提前宣告。
- compose檔案
configserver:
image: swarm_configserver
ports:
- "6200:6200"
- "6201:6201"
environment:
SPRING_PROFILES_ACTIVE: development
PORT: 6200
BG_PORT: 6201
EUREKA_PORT: 6761
MY_IP: 192.168.170.30
volumes:
- /Users/lind.zhang/github/config_repo:/config_repo
- bootstramp.yml檔案
spring:
profiles: development
cloud:
config:
server:
git:
uri: /config_repo