栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

SpringCloud学习十二(Docker-Compose微服务集群部署和Docker镜像仓库)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud学习十二(Docker-Compose微服务集群部署和Docker镜像仓库)

SpringCloud学习十二(Docker-Compose微服务集群部署和Docker镜像仓库)

Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

1、初识Docker-Compose

之前的配置mysql的配置【作为下面代码的参考】

docker run 
  --name mysql 	
  -e MYSQL_ROOT_PASSWORD=1234 
  -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf 
  -v /tmp/mysql/data:/var/lib/mysql 
  -p 3306:3306 
  -d 
  mysql:latest

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

DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/

其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。

下载和上传docker-compose都在上两篇的安装中有说到

2、部署微服务集群

需求:将之前学习的cloud-demo微服务集群利用DockerCompose部署

实现思路:

① 查看课前资料提供的cloud-demo文件夹,里面已经编写好了docker-compose文件

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: 1234
    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"

可以看到,其中包含5个service服务:

  • nacos:作为注册中心和配置中心
    • image: nacos/nacos-server: 基于nacos/nacos-server镜像构建
    • environment:环境变量
      • MODE: standalone:单点模式启动
    • ports:端口映射,这里暴露了8848端口
  • mysql:数据库
    • image: mysql:latest:镜像版本是mysql:latest
    • environment:环境变量
      • MYSQL_ROOT_PASSWORD: 1234:设置数据库root账户的密码为1234
    • volumes:数据卷挂载,这里挂载了mysql的data、conf目录,其中有我提前准备好的数据
  • userservice、orderservice、gateway:都是基于Dockerfile临时构建的

② 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名

mysql、nacos为部署的服务名

spring:
  datasource:
    url: jdbc:mysql://mysql:3306/cloud_order?useSSL=false
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos服务地址

③ 使用maven打包工具,将项目中的每个微服务都打包为app.jar

接下来需要将我们的每个微服务都打包。因为之前查看到Dockerfile中的jar包名称都是app.jar,因此我们的每个微服务都需要用这个名称。

可以通过修改pom.xml中的打包名称来实现,每个微服务都需要修改:


  
  app
  
    
      org.springframework.boot
      spring-boot-maven-plugin
    
  

打包统一在父工厂中使用打包工具,会默认的将所有子过程一并打包的,如果是一个一个的打包就会出现错误

④ 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中

⑤ 将cloud-demo上传至虚拟机,利用docker-compose up -d 来部署

先进入到当前上传的文件夹,然后执行命令

# 构建部署项目,后台运行
docker-compose up -d
# 查看镜像
docker ps
# 查看运行的日志
docker-compose logs -f

第一次构建会比较慢,需要联网下载相关的依赖

如果在查看日志的时候出现报错,可能是以为启动顺序的问题导致的,可以使用如下语句完成重启

docker-compose restart gateway userservice orderservice

项目部署发布之后就可以使用虚拟机的ip拼接网关来进行访问数据了

Docker镜像仓库

搭建查看上连篇的安装

镜像仓库推送前需要把仓库地址配置搭配docker访问的daemon.json文件中,被docker信任

1、搭建私有镜像仓库

构建

docker-compose up -d

查看日志

docker-compose logs -f

访问仓库地址【ip地址:8080】

2、向镜像仓库推送镜像

推送镜像到私有镜像服务必须先tag,步骤如下:

① 重新tag本地镜像,名称前缀为私有仓库的IP地址:IP地址:8080/【必须的】

docker tag nginx:latest 192.168.150.101:8080/nginx:1.0 

② 推送镜像

docker push 192.168.150.101:8080/nginx:1.0 

③ 拉取镜像

docker pull 192.168.150.101:8080/nginx:1.0 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945776.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号