天天看點

使用docker-compose來部署開發環境

docker-compose的作用

docker-comopse可以幫助我們快速搭建起開發環境,比如你可以去把redis,mongodb,rabbitmq,mysql,eureka,configserver等一次部署在本機,然後讓它們做為其它項目的基礎,這是可以實作的。

容器之間的通訊-links

由于每個docker執行個體都是一個封閉的環境,是以預設情況下它們是不能共享的,即你的rabbit容器不能連接配接你的redis容器,你的configserver不能連接配接你的eureka容器,如果希望讓它們之間進行資料通訊,需要設定

links

屬性來實作,而在本機(主控端)上進行連接配接時,使用localhost和端口是可以通路這些容器的,這個我們要清楚。

啟動順序-depends_on

而對于啟動順序來說,比如你的configserver依賴于eureka,希望先啟動被依賴的容器,再運作自己,這時我們可以使用depends_on屬性來實作,當然它也隻是啟動順序,不能保證服務真的越來後再去啟動另一個,解決的方法是使用

失敗重試

機制

restart: on-failure

,當configserver失敗後,你可以重新開機,直到成功為止(主是直到eureka啟動越來為止)。

容器與容器之間要用服務名通訊

如果我們的具體項目也希望部署到docker-compose裡,希望去通路其它的服務,這時,需要使用docker-compose裡定義的服務名稱,而不是localhost,因為當你的容器起來之後,它的localhost是自己的容器,而不是主控端,反之在主控端上,如果希望通路容器,可以使用

localhost

,這一點在前文中已經提到。

下面是我寫的一個部署開發環境的例子

version: "3.3"
services:

  # 公用元件相關配置
  mongodb:
    image: mongo:3.4.10
    ports:
      - "27017:27017"
    networks:
      - dev
    volumes:
      - mongo_data:/data/db
 
  redis:
    image: redis:3.2-alpine
    networks:
      - dev
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
 
  rabbit:
    image: rabbitmq:3.6.10-management-alpine
    hostname: rabbit
    ports:
      - "5672:5672"
      - "15672:15672"
      - "61613:61613"
    networks:
      - dev
    environment:
      RABBITMQ_DEFAULT_VHOST: pilipa
    volumes:
      - rabbitmq_data:/var/lib/rabbitmq
  
  eurekaserver:
    build: ./springcloud/eureka-server
    restart: on-failure
    ports:
      - "8761:8761"
      - "8762:8762"
    networks:
      - dev
 
  configserver:
      build: ./springcloud/config-server
      restart: on-failure
      ports:
        - "8888:8888"
        - "8889:8889"
      networks:
        - dev
      depends_on:
        - eurekaserver #依賴服務
      links:
        - eurekaserver
      environment:
        SPRING_PROFILES_ACTIVE: devops
      volumes:
        - /Users/lind.zhang/project/config-repo:/config_repo #前面是本地路徑,後而是容器裡的路徑,在configserver裡配置的是後面的容器路徑
           

啟動與更新

  1. 先打鏡像
docker-compose build
           
  1. 再啟動服務
docker-compose up -d #-d是背景運作
           
  1. 停止服務
docker-compose down
           
  1. 檢視容器的日志
docker logs -f 容器ID
           

希望本文章對各位學者有所幫助!

作者:倉儲大叔,張占嶺,

榮譽:微軟MVP

QQ:853066980

支付寶掃一掃,為大叔打賞!

使用docker-compose來部署開發環境