目錄
- 1.Docker Compose
- 1.1.初識DockerCompose
- 1.2.安裝Docker Compose
- 1.3.部署微服務集群
- 1.3.1.compose文件
- 1.3.2.修改微服務配置
- 1.3.3.打包
- 1.3.4.拷貝jar包到部署目錄
- 1.3.5.部署
- 2.Docker鏡像倉庫
- 2.1.搭建私有鏡像倉庫
- 2.2.推送、拉取鏡像
1.Docker Compose
Docker Compose可以基于Compose文件幫我們快速的部署分布式應用,而無需手動一個個創建和運行容器!

1.1.初識DockerCompose
Compose文件是一個文本文件,通過指令定義集群中的每個容器如何運行。格式如下:
version: "3.8"
services:
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123
volumes:
- "/tmp/mysql/data:/var/lib/mysql"
- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
web:
build: .
ports:
- "8090:8090"
上面的Compose文件就描述一個項目,其中包含兩個容器:
mysql:一個基于mysql:5.7.25鏡像構建的容器,并且掛載了兩個目錄web:一個基于docker build臨時構建的鏡像容器,映射端口時8090
Docker Compose的詳細語法參考官網:Compose file specification
其實Docker Compose文件可以看做是將多個docker run命令寫到一個文件,只是語法稍有差異。
1.2.安裝Docker Compose
參考安裝Docker
1.3.部署微服務集群
需求:將之前的cloud-demo微服務集群利用Docker Compose部署
實現思路:
① 根據集群建立的cloud-demo文件夾,編寫好了docker-compose文件
② 修改自己的cloud-demo項目,將nacos地址都命名為docker-compose中的服務名
③ 使用maven打包工具,將項目中的每個微服務都打包為app.jar
④ 將打包好的app.jar拷貝到cloud-demo中的每一個對應的子目錄中
⑤ 將cloud-demo上傳至虛擬機,利用docker-compose up -d來部署
1.3.1.compose文件
根據集群建立的cloud-demo文件夾,編寫好了docker-compose文件,而且每個微服務都準備了一個獨立的目錄:

內容如下:
version: "3.2"
services:
userservice:
build: ./user-service
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10010:10010"
可以看到,其中包含4個service服務:
- nacos:作為注冊中心和配置中心
- image: nacos/nacos-server: 基于nacos/nacos-server鏡像構建
- environment:環境變量
- MODE: standalone:單點模式啟動
- ports:端口映射,這里暴露了8848端口
- userservice、orderservice、gateway:都是基于Dockerfile臨時構建的
查看微服務目錄,可以看到都包含Dockerfile文件:

內容如下:
FROM java:openjdk-8u111-alpine COPY ./gateway.jar /tmp/app.jar ENTRYPOINT java -jar /tmp/app.jar
FROM java:openjdk-8u111-alpine COPY ./order-service.jar /tmp/app.jar ENTRYPOINT java -jar /tmp/app.jar
FROM java:openjdk-8u111-alpine COPY ./user-service.jar /tmp/app.jar ENTRYPOINT java -jar /tmp/app.jar
1.3.2.修改微服務配置
因為微服務將來要部署為docker容器,而容器之間互聯不是通過IP地址,而是通過容器名。這里我們將order-service、user-service、gateway服務的nacos地址都修改為基于容器名的訪問。
如下所示:
spring:
application:
name: orderservice
cloud:
nacos:
server-addr: nacos:8848 # nacos服務地址
1.3.3.打包
接下來需要將我們的每個微服務都打包。
可以通過修改pom.xml中的打包名稱來實現,每個微服務都需要修改:
<build>
<!-- 服務打包的最終名稱 -->
<finalName>gateway</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
打包后:

1.3.4.拷貝jar包到部署目錄
編譯打包好的jar包文件,需要放到Dockerfile的同級目錄中。注意:每個微服務的jar包放到與服務名稱對應的目錄,別搞錯了。
user-service:

order-service:

gateway:

1.3.5.部署
最后,我們需要將文件整個cloud-demo文件夾上傳到虛擬機中,理由DockerCompose部署。
上傳到任意目錄:

部署:
進入cloud-demo目錄,然后運行下面的命令:
docker-compose up -d
2.Docker鏡像倉庫
2.1.搭建私有鏡像倉庫
參考安裝Docker
2.2.推送、拉取鏡像
推送鏡像到私有鏡像服務必須先tag,步驟如下:
① 重新tag本地鏡像,名稱前綴為私有倉庫的地址:192.168.0.111:8080/
docker tag nginx:latest 192.168.0.111:8080/nginx:1.0
② 推送鏡像
docker push 192.168.0.111:8080/nginx:1.0
③ 拉取鏡像
docker pull 192.168.0.111:8080/nginx:1.0






