当前位置:   article > 正文

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

docker部署微服务

Docker部署微服务

场景介绍

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

整体架构如下

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

整体服务说明

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

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

配置文件提取

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

pom文件定义属性

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

 
<properties>
<mysql.addr>192.168.64.153:3306</mysql.addr>
<nacos.addr>192.168.64.153:8848</nacos.addr>
</properties>

配置编译选项

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

 
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>

配置文件配置

在子项目的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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/218334
推荐阅读
相关标签
  

闽ICP备14008679号