1.06 docker Compose多容器部署

尹成發表於2018-12-10

1.docker部署wordpress

  • 將dockerHub上的wordpress和mysql拉取到本地
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 建立mysql的container,埠不需要對映,資料庫是wordpress去訪問
    在這裡插入圖片描述
  • 建立wordpress的container,對映到本地的8080埠
    在這裡插入圖片描述
  • 訪問IP:8080,可以看到wordpress的歡迎頁
    在這裡插入圖片描述
  • 選中文,繼續
    在這裡插入圖片描述
  • 填寫資訊,點選安裝
    在這裡插入圖片描述
  • 點登入,通過兩個image成功部署了wordpress
    在這裡插入圖片描述
    在這裡插入圖片描述

2.docker compose介紹

  • 多容器的APP很難部署和管理
  • docker compose就類似於批處理
    在這裡插入圖片描述
  • docker compose是一個命令列工具,可以通過一個yml格式的檔案定義多容器的docker應用
  • 通過一條命令就可以根據yml檔案的定義去建立或者管理多個容器
  • docer compose版本2只能用於單機,版本3可以用於多機
  • docker-compose.yml是預設的名字,檔案中有如下三種重要的概念
    在這裡插入圖片描述
  • Services:一個service代表一個container,這個container可以由dokerHub的image建立,也可以由本地的Dockerfile build出來的image建立
  • Services的啟動類似於docker run,可以給其指定network和volume,所以可以給service指定network和volume的引用

3.docker compose安裝和使用

  • 下載docker compose
    在這裡插入圖片描述
  • 賦許可權
    在這裡插入圖片描述
  • 檢視版本,顯示就安裝好了
    在這裡插入圖片描述
  • 在某個目錄建立docker-compose.yml檔案,這裡在/home下建立,寫入內容
    在這裡插入圖片描述
version: '3'

services:

  wordpress:
    image: wordpress
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_PASSWORD: admin
    networks:
      - my-bridge

  mysql:
    image: mysql:5.5
    environment:
      MYSQL_ROOT_PASSWORD: admin
      MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - my-bridge

volumes:
  mysql-data:

networks:
  my-bridge:
    driver: bridge
  • 啟動docker-compose
    在這裡插入圖片描述
  • 另一個視窗檢視容器網路狀態
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 在另一個會話,檢視當前docker程式
    在這裡插入圖片描述
  • 檢視docker-compose
    在這裡插入圖片描述
  • 停止docker-compose
    在這裡插入圖片描述
  • 啟動docker-compose
    在這裡插入圖片描述
  • 停止並刪除docker-compose
    在這裡插入圖片描述
  • 後臺執行docker-compose
    在這裡插入圖片描述
  • 互動執行docker-compose的方法
    在這裡插入圖片描述
  • 找到之前寫的flask-redis,進入目錄
    在這裡插入圖片描述
  • 建立docker-compose.yml,寫入如下內容
version: "3"

services:

  redis:
    image: redis

  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8080:5000
    environment:
      REDIS_HOST: redis
  • 啟動docker-compose
    在這裡插入圖片描述
  • 啟動後,瀏覽器訪問IP:8080,可以看到如下
    在這裡插入圖片描述
  • 停止並刪除
    在這裡插入圖片描述
    4.容器擴充套件和負載均衡
  • 啟動並後臺執行compose
    在這裡插入圖片描述
  • 檢視程式,此時有一個redis和一個web
    在這裡插入圖片描述
  • 擴充套件web的應用部署
  • 但是執行完會報錯,8080埠占用
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 停止並刪除compose
    在這裡插入圖片描述
  • 刪除docker-compose.yml中的如下兩行
    在這裡插入圖片描述
  • 啟動並建立3個web服務
  • 執行中也可以擴充套件,實現了高效快速擴充套件
    在這裡插入圖片描述
  • 檢視程式
    在這裡插入圖片描述
  • 假如有多個web,同時訪問一個redis,還需要一個負載均衡器
    在這裡插入圖片描述
  • 修改之前的app.py如下
    在這裡插入圖片描述
  • 修改之前的Dockerfile如下
    在這裡插入圖片描述
  • 修改之前的docker-compose.yml如下,最後加一段haproxy
    在這裡插入圖片描述
  • 停止並刪除compose
    在這裡插入圖片描述
  • 執行compose
    在這裡插入圖片描述
  • 嘗試訪問
    在這裡插入圖片描述
  • 動態將web擴充套件成3個
    在這裡插入圖片描述
  • 檢視程式
    在這裡插入圖片描述
  • 嘗試訪問
    在這裡插入圖片描述
  • 當訪問高峰過去,還可以減少叢集節點
    在這裡插入圖片描述
  • 檢視程式
    在這裡插入圖片描述
  • 停止並刪除compose
    在這裡插入圖片描述

5.複雜應用部署

  • 有兩個對外的App,votingApp是對外投票用的,resultsApp會實時顯示候選人得票情況
  • votingApp訪問量大,先把投票結果寫到redis快取,java去取結果寫到資料庫
  • resultsApp從資料庫獲取最新的投票結果
    在這裡插入圖片描述
  • 進入目錄
    在這裡插入圖片描述
  • 啟動docker-compose
    在這裡插入圖片描述
  • 瀏覽器訪問5000和5001埠
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 關閉並刪除
    -在這裡插入圖片描述

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

[清華團隊帶你實戰區塊鏈開發]
(https://ke.qq.com/course/344443?tuin=3d17195d)
掃碼獲取海量視訊及原始碼 QQ群:
721929980
在這裡插入圖片描述

相關文章