Compose 是用於定義和運行多容器 Docker 應用程序的工具。通過 Compose 可以使用 YML 文件來配置應用程序需要的所有服務。然后,使用一個命令,就可以從 YML 文件配置中創建並啟動所有服務。他是用來描述和處理復雜的但是又具有統一性和可預測性的形式來管理應用程序,他的描述文件里包含了卷、網絡、容器等詳細內容,通過 Compose 文件可以組成一個應用程序以及描述他們之間的關系。
這個案例筆記是在之前的多個Docker容器組網實現負載均衡的方案的基礎上改進的,有關 docker compose 教程參考 docker compose 介紹
docker compose 文件
version: '3.8'
networks:
blogfrontend:
blogbackend:
volumes:
blogdata:
services:
blogmysql:
restart: always
image: "mysql:latest"
ports:
- 3307:3306
volumes:
- blogdata:/var/lib/mysql
networks:
- blogbackend
environment:
MYSQL_ROOT_PASSWORD: 123456
BIND-ADDRESS: 0.0.0.0
command:
--lower_case_table_names=1
blogweb:
restart: always
build:
context: .
dockerfile: Dockerfile
networks:
- blogbackend
- blogfrontend
environment:
DBNAME: appsoft
DBHOST: blogmysql
DBPORT: 3306
DBPWD: 123456
depends_on:
- blogmysql #連接數據庫
balance:
restart: always
image: dockercloud/haproxy:1.2.1
ports:
- 9000:80
links:
- blogweb
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- blogfrontend
docker compose 服務包括以下內容
- mysql 服務
- mvc 項目服務
- 負載均衡服務
compose 服務中有兩個網絡,后台網絡(blogbackend)使 mysql 和 mvc 連接;前台網絡(blogfrontend)使 mvc 和 負載均衡(balance)連接。
構建
docker-compose build
啟動
docker-compose up
水平伸縮擴展服務
docker-compose scale blogweb=6
刪除
docker-compose down
# docker-compose down -v # 刪除並刪除掛載
以上操作是部署在本地 windows 開發環境的。在 linux 上部署可以使用本地 vscode ssh遠程連接 linux 服務器將代碼下載到服務器后直接使用 docker compose 構建運行。后續再改用CI/CD。