服務(wù)編排概念
-
微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)中一般包含若干個(gè)微服務(wù),每個(gè)微服務(wù)一般都會(huì)部署多個(gè)實(shí)例,如果每個(gè)微服務(wù)都要手動(dòng)啟停,維護(hù)的工作量會(huì)很大。
- 要從Docker build image 或者去 Docker Hub拉取image。
- 要?jiǎng)?chuàng)建多個(gè)container。
- 要管理這些container(啟動(dòng)、停止、刪除等)。
服務(wù)編排:按照一定的業(yè)務(wù)規(guī)則批量管理容器。
Docker Compose概念
- Docker Compose是一個(gè)編排多容器分布式部署的工具,提供命令管理容器化應(yīng)用的完整開發(fā)周期,包括服務(wù)創(chuàng)建構(gòu)建、啟動(dòng)和停止。
- 使用步驟如下:
- ①利用Dockerfile定義運(yùn)行環(huán)境鏡像。
- ②使用docker-compose.yml定義組成應(yīng)用的各個(gè)服務(wù)。
- ③運(yùn)行docker-compose up啟動(dòng)應(yīng)用。

Docker Compose概念
Docker Compose的安裝和卸載
Docker Compose的安裝
# Compose目前已經(jīng)完全支持Linux、Mac OS和Windows,在我們安裝Compose之前,需要先安裝Docker。下面我 們以編譯好的二進(jìn)制包方式安裝在Linux系統(tǒng)中。
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 設(shè)置文件可執(zhí)行權(quán)限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
Docker Compose的卸載
# 二進(jìn)制包方式安裝的,刪除二進(jìn)制文件即可
rm /usr/local/bin/docker-compose
Docker Compose的應(yīng)用示例
- 新建一個(gè)SpringBoot項(xiàng)目,隨便建。
- 編寫Dockerfile文件。
# 指定基礎(chǔ)鏡像,在其上進(jìn)行定制
FROM java:8
#這里的 /tmp 目錄就會(huì)在運(yùn)行時(shí)自動(dòng)掛載為匿名卷,任何向 /tmp 中寫入的信息都不會(huì)記錄進(jìn)容器存儲(chǔ)層
VOLUME /tmp
# 指定在創(chuàng)建容器后,終端默認(rèn)登陸進(jìn)來(lái)的工作目錄,一個(gè)落腳點(diǎn)
WORKDIR /
#復(fù)制上下文目錄下的/target/demo-1.0.jar到容器里,并將文件名稱修改為demo.jar
ADD /target/demo-1.0.jar demo.jar
#bash方式執(zhí)行,使robot.jar可訪問
#RUN新建立一層,在其上執(zhí)行這些命令,執(zhí)行結(jié)束后, commit 這一層的修改,構(gòu)成新的鏡像。
RUN bash -c "touch /demo.jar"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#聲明運(yùn)行時(shí)容器提供服務(wù)端口,這只是一個(gè)聲明,在運(yùn)行時(shí)并不會(huì)因?yàn)檫@個(gè)聲明應(yīng)用就會(huì)開啟這個(gè)端口的服務(wù)
EXPOSE 8080
#指定容器啟動(dòng)程序及參數(shù) <ENTRYPOINT> "<CMD>"tail
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
- 使用docker build構(gòu)建鏡像。
docker build -t demo
- 新建/var/nginx/nginx.conf.d目錄,并新建nginx.conf配置文件:
server {
listen 80;
server_name 192.168.64.100;
location / {
proxy_pass http://app:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
- 編寫docker-compose.yml。
version: '3'
services:
nginx:
image: nginx
ports:
- "80:80"
links:
- app
volumes:
- "/var/nginx/nginx.conf.d:/etc/nginx/conf.d"
app:
image: demo
- 使用如下命令啟動(dòng):
docker-compose up -d
- 訪問:http://192.168.64.100。