赞
踩
场景介绍
我们使用Docker完成一个微服务的搭建过程
整体架构如下
使用多个微服务进行项目部署测试
整体服务说明
我们总共涉及到三个微服务以及两个中间件
服务名称 | 描述 |
---|---|
mysql | 数据库服务 |
nacos | 注册中心 |
learn-docker-gateway | 网关服务 |
learn-docker-web | API接口服务 |
learn-docker-storage | 存储服务 |
配置文件提取
因为我们在开发中需要频繁修改
application.yml
文件我们将配置项配置到pom
文件中打包时自动打到配置文件,这样可以用一个pom
文件控制多个不同的服务的配置文件项的修改
pom文件定义属性
我们需要在总
pom
文件定义全局配置,例如nacos
、mysql
等配置
<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 已成为 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 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。