SpringCloud(五)将微服务项目构建成镜像
自定义镜像(单个部署) Dockerfile
基于java:8-alpine镜像,将一个java项目构建为镜像
构建:docker build -t javaweb:1.0 . (-t 构建 名称:版本 最后面的. 是Dockerfile的目录)
集群部署 DockerCompose
Docker Compose 可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。(可以理解为是多个docker run 指令)
写法类似于yml文件
Docker Compose的详细语法参考官网: https://docs.docker.com/compose/compose-file/
CentOS7 安装 DockerCompose 教程:
链接:https://pan.baidu.com/s/1ykmcSM0cYQnJkfUXsyKX_w
提取码:6zjt
DockerCompose 下载地址:
链接:https://pan.baidu.com/s/1BrW4gBfFyWIDD5S2Z3MyTg
提取码:8bik
案例(一)与传统的docker run命令进行对比
案例(二)实战项目把微服务集群利用DockerCompose部署
1、新建项目文件夹cloud-demo把三个微服务文件夹创建一下,在每个微服务中准备好dockerfile文件 和 微服务的jar包
三个微服务的dockerfile内容配置成一致
FROM java:8-alpine COPY ./app.jar /tmp/app.jar ENTRYPOINT java -jar /tmp/app.jar
注意事项:
1.1 -- 修改每个微服务yml文件中的nacos、数据库地址都改为docker-compose中的服务名(服务名见第三步docker-compose)
举例:
1.2 -- 三个微服务的pom文件中都配置好统一的build,这里的finalName即打包后生成的jar包的名字。
配置的jar包的名字要与dockerfile中jar包的名字一致
1.3 -- 改好pom文件后,使用maven工具将每个微服务打包,生成jar包放到对应的文件夹中。如图:
2、因为三个微服务依赖于mysql所以同时创建一个mysql文件夹。在mysql文件夹中创建好 conf 和 data 文件夹
conf:存放mysql的一些配置。
data:数据库表,数据。
3、创建 docker-compose.yml 文件。
version: "3.2" services: nacos: image: nacos/nacos-server environment: MODE: standalone ports: - "8848:8848" mysql: image: mysql:5.7.25 environment: MYSQL_ROOT_PASSWORD: 123 volumes: - "$PWD/mysql/data:/var/lib/mysql" - "$PWD/mysql/conf:/etc/mysql/conf.d/" userservice: build: ./user-service orderservice: build: ./order-service gateway: build: ./gateway ports: - "10010:10010"
4、将项目文件夹cloud-demo上传至服务器,进入到cloud-demo文件夹,利用 docker-compose up -d 来部署,这里可能会失败(加载顺序或centos加载的比较慢问题),重新启动一下微服务就可以了。
重启所有(这里是三个)微服务指令 docker-compose restart gateway userservice orderservice
创建并执行容器:
重启微服务:
备注:
可以通过 docker-compose --help 来查看相关命令
常用的有
up 创建并执行容器 -- docker-compose up -d -d代表后台运行
stop 停掉
down 停掉并删除
restart 重启
logs 查看日志