Docker概念

  1. Docker 是一个开源的应用容器引擎
  2. 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
  3. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上
  4. 容器是完全使用沙箱机制,相互隔离
  5. 容器性能开销极低
  6. Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版)和 EE(Enterprise Edition: 企业版)

总结:docker是一种能解决容器款环境迁移问题的容器技术。

本次任务旨在使用Docker部署账单微服务项目,具体任务过程需要在虚拟机CentOS7里部署MySQL、Eureka Server、账单微服务、网关微服务、配置微服务。在虚拟机中部署需先在外部机上部署测试好,外部机上具体实现步骤可参考Spring Cloud重构个人记账项目(账单微服务、网关微服务、配置微服务)

虚拟机上发布spring boot项目需要使用到dockerfile

Dockerfile概念

  1. Dockerfile 是一个文本文件
  2. 包含了一条条的指令
  3. 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
  4. 对于开发人员:可以为开发团队提供一个完全一致的开发环境
  5. 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
  6. 对于运维人员:在部署时,可以实现应用的无缝移植

部署MySQL

  1. 搜索mysql镜像
docker search mysql
  1. 拉取mysql镜像
docker pull mysql:5.6
  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=123456 \
mysql:5.6

参数说明:

  • -p 3307:3306:将容器的3306端口映射到宿主机的3306端口。
  • -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=123456:初始化 root 用户的密码。
  1. 进入容器,操作mysql
docker exec -it c_mysql /bin/bash
mysql -uroot -p123456
show databases;
create database db1;
  1. 使用外部机器连接容器中的mysql

这里我用Navicat通过端口映射连接容器内的数据库c_mysql,将外部机里的两张表(bill_、bill_type_)直接拷了过来:

dockerfile发布eureka-server

install编译eureka-server项目,成功后将jar包拷出来

jar包拷进虚拟机里的/root/docker-files目录下,输入:

vim eureka_file

文件按如下编辑:

镜像文件(eureka_file)说明:

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

build

docker bulid –f ./eureka_file –t eureka .

启动容器

docker run -id -p 9000:10086 eureka


到这里,eureka就在虚拟机里部署好了。

现在到了比较关键的一步(很坑,亲测过多次,一定要做,不然其他的微服务就没办法注册进eureka注册中心):

使用 docker exec -it eureka的id /bin/bash 进入eureka的docker容器中,然后使用cat /etc/hosts命令查看容器的IP地址:

将这个eureka的ip地址写入到config-server的yml文件

PS:其余两个微服务(bill-gateway、bill-service)的yml文件对应也都要改,eureka-server也改。总之就是4个微服务的yml文件都对应改过来!其中bill-service要改的多一些,注意配置文件中数据库的url要改成刚部署好的虚拟机容器内的mysql。

config-server、bill-service、bill-gateway的部署方式跟eureka-server类似,都是打jar包上传,修改dockerfile文件,构建镜像,创建并启动容器这几步,就不再赘述。

最终4个微服务在Docker中部署完成后如下:

成功实现3项微服务均注册进eureka注册中心:

网页查询账单列表也能顺利返回所期待的json格式数据列表:

Docker学习篇——使用Docker部署账单微服务项目相关推荐

  1. 原生K8S部署pig微服务项目

    原生K8S部署pig微服务项目 简介 项目地址:码云 Pig微服务项目 基于 Spring Cloud 2021 .Spring Boot 2.7. OAuth2 的 RBAC 权限管理系统 基于数据 ...

  2. Istio灰度发布:部署Bookinfo微服务项目

    对于istio流量管理我们通过灰度发布将流量转移到不同的服务上面,你可以去任意的配置.比如10%流量到新版本,90%到旧版本,这些是都可以去配置的. 1.创建命名空间并开启自动注入 [root@mas ...

  3. Docker实践(七)部署SpringBoot微服务

    目录 打包 编写DockerFile 构建镜像 创建容器并启动容器 测试 打包 使用maven或者其他构建工具,打包可运行jar或者war,这里使用可运行jar进行部署. 编写DockerFile 创 ...

  4. docker中部署piggymetrics微服务项目

    1.环境 vmware 10. centos7.0,Docker(version 18.09.7, build 2d0083d),docker-compose(version 1.24.1, buil ...

  5. 新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战

    新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战 近年来,微服务架构已经成为企业标配,它以更加灵活的部署方式和高度解耦的架构设计,为企业带来了极大的业 ...

  6. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  7. 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth

    为什么80%的码农都做不了架构师?>>>    前言 微服务架构中完成一项功能经常会在多个服务之间远程调用(RPC),形成调用链.每个服务节点可能在不同的机器上甚至是不同的集群上,需 ...

  8. 微服务项目部署在docker容器运行

    昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:htt ...

  9. Docker实战-部署GPE微服务的监控体系

    Docker实战-部署GPE微服务的监控体系 前言 微服务体系架构里,有很多的解决方案都是使用GPE作为微服务体系的监控体系, 如下图所示: 我们这里经常提到的GPE,包括Grafana,Promet ...

最新文章

  1. ADO.NET 快速入门(四):从数据库填充 DataSet
  2. django使用templates模板
  3. 初学Vue 遇到Module not found:Error:Can`t resolve 'less-loader' 问题
  4. LeetCode每日训练1——爬楼梯问题(2020.7.1)
  5. 我的第一个Spring MVC程序
  6. 二叉树的后续遍历算法实现
  7. 这一两天要做的事--关于Altera FPGA首先要搞清楚的几个问题 以及解答
  8. python支持按指定字符串分割成数组_python – 如何切割numpy数组字符串的每个元素?...
  9. python 正交矩阵_协方差矩阵的计算、PCA
  10. 第 72 章 FAQ
  11. Visual Studio 2010如何利用宏
  12. 匹配区县代码_行政区划代码查询
  13. java获取本机物理ip地址吗_Java获取本机所有ip地址
  14. 最新电脑cpu性能排行服务器,至强cpu天梯图2020_intel服务器cpu排行榜2020
  15. APP测试点分析与总结
  16. 为什么YUV全为0的图像是绿色的
  17. 通过UA区分微信PC端浏览器还是手机端浏览器
  18. java杂谈(瞎吉尔找的练习)
  19. DFIG控制3: 风机模型和最基础的MPPT
  20. STM32 Cube IDE HAL库驱动 W25Q128 进行读、写、擦除操作

热门文章

  1. Win10小喇叭显示红叉,显示未找到输出设备的解决方式
  2. 文科女生学计算机好吗6,文科女生学计算机专业怎么样?
  3. 杨国福麻辣烫冲刺上市,福祸未卜
  4. php怎么点击确认收货,Ecshop的recieve.php邮件自动确认收货BUG如何修正
  5. 最牢固的职场友谊,是能一起赚钱
  6. 南京师范大学875计算机专业,2022年南京师范大学计算机科学与技术上岸考研经验分享及参考书...
  7. 制作超好看的个人网站:用ThreeJs为你的网站打造个性的动画背景
  8. 华为p40android auto,华为P40系列表现究竟如何?看权威媒体专业点评
  9. 安卓取消apple music订阅
  10. EXCEL 实现所有子表条件筛选汇总到新表