Docker 实战 - 部署微服务项目

Docker 实战 - 部署微服务项目


目录

  • Docker 实战 - 部署微服务项目
    • 1. 部署 MySQL
    • 2. 部署 Eureka-Server
    • 3. 部署 Config-Service
    • 4. 部署 Gateway-Server
    • 5. 部署 Bill-Service
    • 6. 接口测试
    • 7. 部署 Tomcat(前端页面)


  • 项目地址:https://github.com/chrismurpy/SpringCloud-BillManage
  • 目标:使用Docker部署账单微服务项目。
  • 具体过程:在虚拟机CentOS 7里部署MySQL、注册中心(Eureka Server)、账单微服务(bill-service)、网关微服务(gateway-service)、配置微服务(config-service),并且在Tomcat中部署前端页面

1. 部署 MySQL

  1. 搜索mysql镜像
docker search mysql
  1. 拉取mysql镜像
docker pull mysql:8.0.16
  1. 创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息 
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=xmf123123 \
mysql:8.0.16

参数说明

-p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf - 配置目录
-v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs - 日志目录
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的/var/lib/mysql - 数据目录
-e MYSQL_ROOT_PASSWORD=xmf123123:初始化root用户的密码。
  1. 使用外部机器连接容器中的mysql - port:3306,并导入数据表(注:SQL文件同在GitHub中)

Docker 实战 - 部署微服务项目_第1张图片


2. 部署 Eureka-Server

  1. 修改配置文件application.yml,将Eureka服务的地址(defaultZone)中的localhost修改为个人虚拟机地址 - 可通过ifconfig指令查看。
    Docker 实战 - 部署微服务项目_第2张图片

  2. 通过Maveninstall指令生成jar包,并将其上传至虚拟机目录 /root/docker-files
    Docker 实战 - 部署微服务项目_第3张图片
    Docker 实战 - 部署微服务项目_第4张图片

  3. 编写dockerfile文件

    • 定义父镜像FROM java:8
    • 定义作者信息:MAINTAINER murphy
    • jar包添加到容器: ADD eureka-server.jar eureka.jar
    • 定义容器启动执行的命令:CMD ["java","-jar","eureka.jar"]

Docker 实战 - 部署微服务项目_第5张图片
4. build、启动容器

  • 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本 .
  • 启动容器:docker run -id -p 端口号:端口号 eureka


5. 运行结果 - 注册中心信息

Docker 实战 - 部署微服务项目_第6张图片


3. 部署 Config-Service

注意:此项目未采取远程仓库的形式存储bill-service配置信息,故本配置仅作为了解。

  1. 修改配置文件application.yml,将Eureka服务的地址(defaultZone)中的localhost修改为个人虚拟机地址 - 可通过ifconfig指令查看。

Docker 实战 - 部署微服务项目_第7张图片
2. 通过Maveninstall指令生成jar包,并将其上传至虚拟机目录 /root/docker-files
3. 编写dockerfile文件

  • 定义父镜像FROM java:8

  • 定义作者信息:MAINTAINER murphy

  • jar包添加到容器: ADD config-service.jar config.jar

  • 定义容器启动执行的命令:CMD ["java","-jar","config.jar"]

Docker 实战 - 部署微服务项目_第8张图片
4. build、启动容器

  • 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本 .
  • 启动容器:docker run -id -p 端口号:端口号 config


5. 运行结果 - 注册中心信息

Docker 实战 - 部署微服务项目_第9张图片


4. 部署 Gateway-Server

  1. 修改配置文件application.yml,将Eureka服务的地址(defaultZone)中的localhost修改为个人虚拟机地址 - 可通过ifconfig指令查看。

Docker 实战 - 部署微服务项目_第10张图片
2. 通过Maveninstall指令生成jar包,并将其上传至虚拟机目录 /root/docker-files

  1. 编写dockerfile文件

    • 定义父镜像FROM java:8
    • 定义作者信息:MAINTAINER murphy
    • jar包添加到容器: ADD gateway-server.jar gateway.jar
    • 定义容器启动执行的命令:CMD ["java","-jar","gateway.jar"]

Docker 实战 - 部署微服务项目_第11张图片
4. build、启动容器

  • 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本 .
  • 启动容器:docker run -id -p 端口号:端口号 gateway

  1. 运行结果 - 注册中心信息

Docker 实战 - 部署微服务项目_第12张图片


5. 部署 Bill-Service

注意:此处并未将配置文件存储在远程仓库

  1. 修改配置文件application.yml,将Eureka服务的地址(defaultZone)中的localhost修改为个人虚拟机地址并且修改数据库的配置信息(相关信息为上述所配置) - 可通过ifconfig指令查看。

Docker 实战 - 部署微服务项目_第13张图片
2. 通过Maveninstall指令生成jar包,并将其上传至虚拟机目录 /root/docker-files

  1. 编写dockerfile文件
    • 定义父镜像FROM java:8
    • 定义作者信息:MAINTAINER murphy
    • jar包添加到容器: ADD bill-service.jar bill.jar
    • 定义容器启动执行的命令:CMD ["java","-jar","bill.jar"]

Docker 实战 - 部署微服务项目_第14张图片
4. build、启动容器

  • 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本 .
  • 启动容器:docker run -id -p 端口号:端口号 bill


5. 运行结果 - 注册中心信息

Docker 实战 - 部署微服务项目_第15张图片

6. 接口测试

  • 分页查询

  • 网关接口测试

在这里插入图片描述

7. 部署 Tomcat(前端页面)

  1. 搜索tomcat镜像
docker search tomcat
  1. 拉取tomcat镜像
docker pull tomcat
  1. 创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat

在这里插入图片描述

  1. 将前端项目(SpringCloud-BillManage-Web)放置在/root/tomcat目录下,通过路径访问相关页面
  2. 访问index.html

Docker 实战 - 部署微服务项目_第16张图片


至此,成功通过Docker部署一个简单的微服务项目。

你可能感兴趣的:(docker,springcloud,docker,运维,springcloud)