• 【步骤详解】Docker一键部署微服务详细教程


    Docker部署微服务

    场景介绍

    我们使用Docker完成一个微服务的搭建过程

    整体架构如下

    使用多个微服务进行项目部署测试

    整体服务说明

    我们总共涉及到三个微服务以及两个中间件

    服务名称 描述
    mysql 数据库服务
    nacos 注册中心
    learn-docker-gateway 网关服务
    learn-docker-web API接口服务
    learn-docker-storage 存储服务

    配置文件提取

    因为我们在开发中需要频繁修改application.yml文件我们将配置项配置到pom文件中打包时自动打到配置文件,这样可以用一个pom文件控制多个不同的服务的配置文件项的修改

    pom文件定义属性

    我们需要在总pom文件定义全局配置,例如nacosmysql等配置

     
    
    192.168.64.153:3306
    192.168.64.153:8848

    配置编译选项

    在子项目的pom文件的build构建配置中使用 true配置,这样就可以将我们的总pom中的配置编译进配置文件了

     
    
    src/main/java
    **/*.xml
    src/main/resources
    true

    配置文件配置

    在子项目的application.yml配置文件中注意使用@xxx@占位符来配置编译占位配置,下面的配置就是用了@@占位符编译后会将pom中的配置编译到配置文件中

     
    
    server:
    port: @project.server.prot@
    spring:
    application:
    name: learn-docker-storage
    ######################### 数据源连接池的配置信息 #################
    datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://@db.addr@/employees?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
    initialSize: 10
    minIdle: 20
    maxActive: 100
    maxWait: 60000
    #### nacos 配置#######
    cloud:
    nacos:
    server-addr: @nacos.addr@
    mybatis:
    mapper-locations: classpath:mapper/*.xml
    type-aliases-package: com.heima.module.p

    编译测试

    配置完后编译项目后,可以进入target目录下查看编译后的配置文件

    我们看到maven已经帮我们将配置编译进了配置文件中了

    安装MySQL

    MySQL简介

    ​ MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。

    查找MySQL镜像

    我们可以使用 docker search 镜像名称,命令来搜索镜像

     
    
    docker search mysql

    参数解释

    搜索出来的有这么多镜像,怎么选择呢

    • NAME: 镜像仓库源的名称

    • DESCRIPTION: 镜像的描述

    • OFFICIAL: 是否 docker 官方发布

    • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

    • AUTOMATED: 自动构建。

    根据参数,我们一般选择 官方发布的,并且stars多的。

    下载镜像

    可以使用docker pull 镜像名称来拉取镜像,我们选择了第一个Mysql的镜像,我们把它给拉取下来

     
    
    docker pull mysql

    注意事项

    • 如果不写版本号默认拉取最新的版本好latest
    • 拉取的时候是多个层一起拉取的,这样可用让其他镜像复用分层
    • 如果拉取的镜像不写仓库地址默认就是docker.io/library/

    下载指定版本的镜像

    我们上面下载的镜像不符合我们的预期,我们需要Mysql5.7的镜像

    查找指定镜像

    可以登录 https://hub.docker.com 地址搜索镜像

    输入需要搜索的镜像名称,并选择对应镜像名称

    选择tag标签,这个就是版本的信息

    找到符合的版本 的mysql镜像,这里我们选择5.7.33

    下载指定版本镜像

    刚才我们已经找到了5.7.33版本的Mysql的镜像,我们使用docker pull命令下载,镜像后面跟的是tag也就是版本名称

     
    
    docker pull mysql:5.7.34

    我们发现,我们的新拉取的mysql镜像共用了 部分分层

    查看镜像

    安装完镜像后,我们需要看一下我们的本地镜像,使用docker images 可用查看本地镜像

     
    
    docker images

    这里有两个镜像,一个是最新版本的一个是我们刚才下载的5.7.33版本的

    MySQL配置

    配置MySQL忽略大小写

    创建MySQL挂载目录,等会会解释什么是挂载路径

     
    
    # 创建MySQL配置的文件夹
    mkdir -p /tmp/etc/mysql
    # 编辑my.cnf配置文件
    vi /tmp/etc/mysql/my.cnf

    配置MySQL忽略大小写,在我们创建的MySQL配置文件挂载点的目录的my.cnf文件加入如下内容

     
    
    [mysqld]
    lower_case_table_names=1

    创建MySQL数据目录

    因为默认MySQL启动后他的文件是在容器中的,如果我们删除容器,数据也将会消失,我们需要将数据挂载出来。

     
    
    #创建mysql存储的目录
    mkdir -p /tmp/data/mysql

    启动MySql

    使用docker run启动容器

     
    
    docker run -d -p 3306:3306 -v /tmp/etc/mysql:/etc/mysql/mysql.conf.d/ -v /tmp/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7.34

  • 相关阅读:
    Linux内存管理(二十一):LRU 第二次机会法
    【Leetcode Sheet】Weekly Practice 11
    生物信息学——常见的四种文件格式(fasta,fastq,sam,vcf)
    【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)
    Windows UAC权限详解以及因为权限不对等引发的若干问题排查
    最大公约数(Python)
    CISP-PTE之SQL注入(二次注入的应用)
    浅谈指针数组
    Arthas 使用以及火焰图
    Python特征选择
  • 原文地址:https://blog.csdn.net/m0_73088370/article/details/126607871