1. 程式人生 > 其它 >使用docker快速部署專案環境

使用docker快速部署專案環境

使用docker一鍵部署專案環境

1.安裝docker

2.安裝docker-compose

3.拉取映象啟動容器

上傳easy_install.zip壓縮包將內容解壓到要安裝的目錄如/home下,解壓包中為編寫好的docker-compose.yml檔案,其中包含了多個容器的安裝,可以選擇把不需要安裝的服務配置註釋掉或者指定建立的容器

version: '3'

services:
  redis:
    image: redis:4.0.8
    container_name: redis
    restart: always
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/hosts:/etc/hosts:ro
      - ./redis/data:/data
      - ./redis/conf/redis.conf:/etc/redis/redis.conf
      - ./redis/conf:/etc/redis
    network_mode: "host"

其中需要關注的主要為volumes,其中

- ./redis/data:/data

表示將宿主機的目錄./redis/data掛載到容器中的/data目錄,目的是將資料儲存到宿主機上,因為容器重啟後/data會清空。一般需要把宿主機的目錄掛在到容器來實現資料持久化。
決定好啟動那些服務後則可以執行命令

docker-compose up -d container_name //更新並建立container_name
or
docker-compose up -d //更新並建立全部容器

此情況以上命令會自動拉取沒有的映象到本地,當伺服器無法訪問外網時,需要從本上傳要部署的映象,然後執行

docker load -i xxxx.tar

啟動時會優先使用本地映象,可通過以下命令確認容器情況

docker ps //查詢已啟動容器
docker ps -a  //查詢全部容器
docker logs imageId/container_name //查詢日誌
docker exec -it imageId/container_name bash //進入容器內部
docker exec -it imageId/container_name + 容器內部執行的命令 //容器內部執行命令

4.部署叢集需要修改的配置

例如要部署三臺機器的ip為:
A) 172.0.0.1 (主)
B) 172.0.0.2 (從)
C) 172.0.0.3 (從)

  • reidis哨兵模式
    其中只需要在兩個從伺服器的redis.conf中增加一行
    slaveof 172.0.0.1 6379
    ##如果master設定了密碼則需要加一行
    ##masterauth <master-password>
    
    以上配置實現了主從模式
    開啟哨兵模式需要將docker-compose.yml中service下的sentinel註釋開啟,執行
    docker-compose up -d sentinel //更新並建立sentinel
    or
    docker-compose up -d //更新並建立全部容器
    
    然後修改三臺伺服器中的sentinel.conf以下內容
    sentinel monitor master 172.0.0.1 6379 2
    
    master為自定義的主節點名稱
    172.0.0.1為主伺服器ip
    2為設定當有幾個從伺服器認為master不可用時會更換master
  • fastdfs
    需要修改三臺伺服器中storage.conf和client.conf的以下內容
tracker_server=172.0.0.1:22122
tracker_server=172.0.0.2:22122
tracker_server=172.0.0.3:22122
  • zookeeper
    需要修改三臺伺服器中zoo.cfg的以下內容
server.1=172.0.0.1:2888:3888
server.2=172.0.0.2:2888:3888
server.3=172.0.0.3:2888:3888

其中server.X中的X為自定義的伺服器id,對應的,需要分別修改各自伺服器下的docker-compose.yml的zookeeper路徑下增加environment:ZOO_MY_ID: 1最終結果為:

zookeeper:
        image: zookeeper
        restart: always
        environment:  
          ZOO_MY_ID: 1  //
        volumes:
          - ./zookeeper/zoo.cfg:/conf/zoo.cfg/datalog              
        container_name: 'zookeeper'
        network_mode: "host"

其中ZOO_MY_ID的值應該為前面修改的zoo.cfg中ip所對應的伺服器id,即172.0.0.1的ZOO_MY_ID為1,172.0.0.2為2,172.0.0.3為3