Docker 編排利器 DockerCompose,編排之後可以一次性通過一條命令啟動一組服務
例如一條命令啟動 SpringBoot 專案,同時啟動 SpringBoot 專案依賴的其他中介軟體(MySQL、Redis等)
系列文章歡迎訪問:https://www.itwxe.com/posts/9e76db89/
一、安裝DockerCompose
1、下載 Docker Compose 。
curl -L https://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王小二
首發地址:https://www.itwxe.com/posts/e4feb9b4/
版權宣告:文章內容遵循 署名-非商業性使用-禁止演繹 4.0 國際 進行許可,除特殊宣告外皆為原創,轉載請在文章頁面明顯位置給出作者與原文連結。