容器編排
是一個容器編排工具,可以通過一個腳本,先安裝 Tomcat 容器,在安裝 MySQL 容器
容器編排工具
- 可以通過一個腳本,先安裝 Tomcat 容器,在安裝 MySQL 容器
- 容器之間形成一個依賴關系,過程中每一個容器需要的配置文件,都可以進行相應的綁定
- 將多個容器在一個文件當中進行編排,先執行哪個后執行哪個,稱為是容器的編排
Docker-Compose 概述
- Compose 是一個用戶定義和運行多個容器的 Docker 應用程序,是一個容器編排工具
- 在 Compose 中你可以使用
YAML
文件來配置你的應用服務 - 只需要一個簡單的命令,就可以創建並啟動你配置的所有服務
- Compose 只能在一台宿主機上對容器進行自動化的部署
- 如果是在集群環境,對很多台宿主機進行部署,就要去使用像
K8S
這些集群部署工具 - 如果你的 docker 安裝在 windows 系統或者是 Mac 系統當中,它里邊會自帶
docker-compose
工具
Docker-Compose
下載 Docker-Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
對 Docker-Compose 進行文件夾的授權
sudo chmod +x /usr/local/bin/docker-compose
使用 docker-compose -version
查看版本
docker-compose -version
SpringBoot 項目打包
首先需要添加(安裝)打包插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
執行 install
命令,然后對應的 jar 包就會被打出來
了解了SpringBoot將項目進行打包之后我這里將會給出一個小小的項目就是單表CRUD的包含對應的SQL語句
這里有一個注意點,我把 application.yml 中 datasource 中 url 里面數據庫地址換成了 db
如下圖所示,這么做的原因就是后面我會利用 docker-compose 來進行替換,就是運行一個 MySQL 容器之后該項目啟動的時候依賴於該鏡像,會自動的去找該 MySQL 鏡像所啟動的容器
首先我們需要將 .jar
與 .sql
文件上傳到 Linux 服務器系統當中,如下
上圖當中我沒有進行分包所以分包之后的效果如下圖,當然也可以不分
創建 App 的 Dockerfile
進入到 myApp 文件夾當中然后創建 Dockerfile 文件,內容如下
FROM openjdk:11.0-jre
WORKDIR /usr/local/my-springboot-project
ADD myProject.jar .
EXPOSE 8808
CMD ["java", "-jar", "myProject.jar"]
構建一個所對應的鏡像構建命令如下
docker build -t it6666/myapp:1.0 .
以該鏡像啟動一個容器如下
docker run it6666/myapp:1.0
可以看到已經啟動完畢了,App 的已經完畢,接下來要介紹的是 MySQL 的打包和啟動,這里有一個注意點需要講解所以我單獨的拎出來講解了如下
創建 DB 的 Dockerfile
FROM mysql:8.0
WORKDIR /docker-entrypoint-initdb.d
ADD springboot.sql .
請注意如上的 Dockerfile 內容當中有一句 WORKDIR /docker-entrypoint-initdb.d
這句的含義為就是在以鏡像創建所對應的容器的時候做初始化的時候會幫你執行 ADD 命令所對應的 .sql
文件它會自動的幫你進行運行並初始化好所對應的表以及數據庫,好了到這里先介紹這么多先構建鏡像,待會運行所對應的容器在看這個注意點即可
docker build -t it6666/mydb .
構建完畢之后在以該鏡像運行一個容器,運行容器命令如下
docker run -d -e MYSQL_ROOT_PASSWORD=1234 it6666/mydb:latest
構建完成然后在進入到容器當中,查看數據庫如下已經自動的幫你運行了 ADD .sql
所指定的文件內容數據庫已經創建好了
docker exec -it a4a950ec3df3 bash
如上構建 App 與 DB 都已經講解完畢,接下來就利用 docker-compose 來將它們整合在一起,一起啟動一起關閉,在 myapp 與 mydb 同層級文件夾下創建一個 docker-compose.yml
文件內容如下
version: '3.3'
services:
db:
build: ./mydb/
restart: always
container_name: mysql
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
environment:
MYSQL_ROOT_PASSWORD: 1234
app:
build: ./myapp/
depends_on:
- db
ports:
- "8808:8808"
restart: always
利用 docker-compose
啟動容器命令如下
docker-compose up
啟動完成即可訪問部署好的項目效果如下所示
但是如果使用如上的方式進行啟動的話你關閉了項目就停掉了,如果想要在后台運行加上一個 -d
即可
docker-compose up -d
如果想要關閉容器可以利用如下命令進行關閉
docker-compose down