Docker編排利器DockerCompose
- 2021 年 7 月 26 日
- 筆記
Docker 編排利器 DockerCompose,編排之後可以一次性通過一條命令啟動一組服務
例如一條命令啟動 SpringBoot 項目,同時啟動 SpringBoot 項目依賴的其他中間件(MySQL、Redis等)
系列文章歡迎訪問://www.itwxe.com/posts/9e76db89/
一、安裝DockerCompose
1、下載 Docker Compose 。
curl -L //get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2、授予 docker-compose
文件可執行許可權。
chmod +x /usr/local/bin/docker-compose
3、查看會否安裝成功。
docker-compose --version
二、DockerCompose詳解
1. 使用DockerCompose步驟
- 使用
Dockerfile
構建自定義鏡像上傳伺服器,一般需要修改初始鏡像行為時才需要使用。 - 使用
docker-compose.yml
文件定義需要部署的應用程式服務,這樣它們可以在隔離環境中一起運行,以便執行腳本一次性部署。 - 最後執行
docker-compose up
命令來創建並啟動所有服務。
2. docker-compose.yml常用命令
version
描述 Compose 文件的版本資訊,各版本詳細資訊可以參考 官方文檔 。
# 指定 3 版本語法
version: '3'
services
services 節點下面的即是定義的各種服務,服務之下為容器,容器與容器直之間可以以服務名稱為域名進行訪問。
image
指定運行的鏡像名稱。
# 指定鏡像為 mysql5.7
image: mysql:5.7
container_name
指定容器名稱。
# 容器名稱
container_name: admin_mysql
ports
指定宿主機和容器的埠映射。
# 映射 mysql埠
ports:
- 3306:3306
volumes
將宿主機的文件或目錄掛載到容器中。
# 掛載 mysql 目錄到容器
volumes:
- /itwxe/dockerData/mysql/data:/var/lib/mysql
- /itwxe/dockerData/mysql/conf:/etc/mysql
- /itwxe/dockerData/mysql/log:/var/log/mysql
environment
配置環境變數。
# 設置 mysql 密碼
environment:
- MYSQL_ROOT_PASSWORD=root
links
連接其他容器的服務。
# 可以 admin_mysql 為域名訪問服務名稱為 db 的容器
links:
- db:admin_mysql
3. Docker Compose常用命令
啟動所有相關容器
docker-compose up -d
指定文件啟動
docker-compose -f docker-compose.yml up -d
停止所有相關容器
docker-compose stop
列出所有容器資訊
docker-compose ps
停止並刪除所有容器(注意數據掛載)
docker-compose down
三、SpringBoot示例
此處還是以自己寫的項目為示例,我的項目依賴 MySQL、Redis、minio(非必要)。
1、打包 SpringBoot 項目鏡像,打包可以參考 Docker使用maven插件打包SpringBoot項目。
2、我的項目啟動依賴 MySQL 中的 sunny 庫,首先得創建容器,掛載宿主機目錄,可以參考 Docker搭建MySQL並掛載數據。
3、項目依賴 Redis 鏡像自定義配置啟動,可以參考 Docker搭建Redis5.0並掛載數據。
4、修改項目 MySQL 和 Redis 使用別名訪問,以 MySQL 為例。
# 修改前
jdbc:mysql://192.168.5.33:3306/sunny?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT%2B8
# 修改後
jdbc:mysql://admin_mysql:3306/sunny?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=GMT%2B8
5、編輯 docker-compose.yml 文件。
version: '3'
services:
# 指定MySQL服務名稱
mysql:
# 指定服務使用的鏡像
image: mysql:5.7
# 指定容器名稱
container_name: admin_mysql
# 指定服務運行的埠
ports:
- 3306:3306
# 指定容器中需要掛載的文件
volumes:
- /itwxe/dockerData/mysql/data:/var/lib/mysql
- /itwxe/dockerData/mysql/conf:/etc/mysql
- /itwxe/dockerData/mysql/log:/var/log/mysql
# 指定容器的環境變數
environment:
- MYSQL_ROOT_PASSWORD=123456
# 指定Redis服務名稱
redis:
# 使用自定義鏡像(指定配置文件)
image: itwxe/redis:5.0.8
container_name: admin_redis
ports:
- 6379:6379
volumes:
- /itwxe/dockerData/redis/data:/data
# 指定項目服務名稱
sunny-admin:
# 指定服務使用的鏡像
image: itwxe/sunny-admin:0.0.1
# 指定容器名稱
container_name: sunny-admin
# 指定服務運行的埠
ports:
- 9002:9002
# 指定容器中需要掛載的文件
volumes:
- /itwxe/dockerData/sunny-admin/logs:/var/logs
# 指定別名,項目yml中可以通過別名訪問,例如:
links:
- mysql:admin_mysql
- redis:admin_redis
6、進入 docker-compose.yml 文件目錄,啟動服務。
docker-compose up -d
可以看到服務都正常啟動了,此時可以訪問下項目,項目正常訪問。
都讀到這裡了,來個 點贊、評論、關注、收藏 吧!
文章作者:IT王小二
首發地址://www.itwxe.com/posts/e4feb9b4/
版權聲明:文章內容遵循 署名-非商業性使用-禁止演繹 4.0 國際 進行許可,除特殊聲明外皆為原創,轉載請在文章頁面明顯位置給出作者與原文鏈接。