Docker学习篇——使用Docker部署账单微服务项目
Docker概念
- Docker 是一个开源的应用容器引擎
- 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上
- 容器是完全使用沙箱机制,相互隔离
- 容器性能开销极低
- Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版)和 EE(Enterprise Edition: 企业版)
总结:docker是一种能解决容器款环境迁移问题的容器技术。
本次任务旨在使用Docker部署账单微服务项目,具体任务过程需要在虚拟机CentOS7里部署MySQL、Eureka Server、账单微服务、网关微服务、配置微服务。在虚拟机中部署需先在外部机上部署测试好,外部机上具体实现步骤可参考Spring Cloud重构个人记账项目(账单微服务、网关微服务、配置微服务)
虚拟机上发布spring boot项目需要使用到dockerfile
Dockerfile概念
- Dockerfile 是一个文本文件
- 包含了一条条的指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
- 对于运维人员:在部署时,可以实现应用的无缝移植
部署MySQL
- 搜索mysql镜像
docker search mysql
- 拉取mysql镜像
docker pull mysql:5.6
- 创建容器,设置端口映射、目录映射
# 在/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 用户的密码。
- 进入容器,操作mysql
docker exec -it c_mysql /bin/bash
mysql -uroot -p123456
show databases;
create database db1;
- 使用外部机器连接容器中的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部署账单微服务项目相关推荐
- 原生K8S部署pig微服务项目
原生K8S部署pig微服务项目 简介 项目地址:码云 Pig微服务项目 基于 Spring Cloud 2021 .Spring Boot 2.7. OAuth2 的 RBAC 权限管理系统 基于数据 ...
- Istio灰度发布:部署Bookinfo微服务项目
对于istio流量管理我们通过灰度发布将流量转移到不同的服务上面,你可以去任意的配置.比如10%流量到新版本,90%到旧版本,这些是都可以去配置的. 1.创建命名空间并开启自动注入 [root@mas ...
- Docker实践(七)部署SpringBoot微服务
目录 打包 编写DockerFile 构建镜像 创建容器并启动容器 测试 打包 使用maven或者其他构建工具,打包可运行jar或者war,这里使用可运行jar进行部署. 编写DockerFile 创 ...
- docker中部署piggymetrics微服务项目
1.环境 vmware 10. centos7.0,Docker(version 18.09.7, build 2d0083d),docker-compose(version 1.24.1, buil ...
- 新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战
新一代微服务全家桶AlibabaCloud+Docker+JDK11阿里云容器部署零基础到项目实战 近年来,微服务架构已经成为企业标配,它以更加灵活的部署方式和高度解耦的架构设计,为企业带来了极大的业 ...
- IDEA集成Docker插件实现一键自动打包部署微服务项目
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth
为什么80%的码农都做不了架构师?>>> 前言 微服务架构中完成一项功能经常会在多个服务之间远程调用(RPC),形成调用链.每个服务节点可能在不同的机器上甚至是不同的集群上,需 ...
- 微服务项目部署在docker容器运行
昨天的一篇微服务项目中涉及到docker部署,今天写一篇关于微服务项目部署在docker容器中运行,使用github上另外一个比较经典的微服务项目piggyMetric,项目的github地址:htt ...
- Docker实战-部署GPE微服务的监控体系
Docker实战-部署GPE微服务的监控体系 前言 微服务体系架构里,有很多的解决方案都是使用GPE作为微服务体系的监控体系, 如下图所示: 我们这里经常提到的GPE,包括Grafana,Promet ...
最新文章
- ADO.NET 快速入门(四):从数据库填充 DataSet
- django使用templates模板
- 初学Vue 遇到Module not found:Error:Can`t resolve 'less-loader' 问题
- LeetCode每日训练1——爬楼梯问题(2020.7.1)
- 我的第一个Spring MVC程序
- 二叉树的后续遍历算法实现
- 这一两天要做的事--关于Altera FPGA首先要搞清楚的几个问题 以及解答
- python支持按指定字符串分割成数组_python – 如何切割numpy数组字符串的每个元素?...
- python 正交矩阵_协方差矩阵的计算、PCA
- 第 72 章 FAQ
- Visual Studio 2010如何利用宏
- 匹配区县代码_行政区划代码查询
- java获取本机物理ip地址吗_Java获取本机所有ip地址
- 最新电脑cpu性能排行服务器,至强cpu天梯图2020_intel服务器cpu排行榜2020
- APP测试点分析与总结
- 为什么YUV全为0的图像是绿色的
- 通过UA区分微信PC端浏览器还是手机端浏览器
- java杂谈(瞎吉尔找的练习)
- DFIG控制3: 风机模型和最基础的MPPT
- STM32 Cube IDE HAL库驱动 W25Q128 进行读、写、擦除操作
热门文章
- Win10小喇叭显示红叉,显示未找到输出设备的解决方式
- 文科女生学计算机好吗6,文科女生学计算机专业怎么样?
- 杨国福麻辣烫冲刺上市,福祸未卜
- php怎么点击确认收货,Ecshop的recieve.php邮件自动确认收货BUG如何修正
- 最牢固的职场友谊,是能一起赚钱
- 南京师范大学875计算机专业,2022年南京师范大学计算机科学与技术上岸考研经验分享及参考书...
- 制作超好看的个人网站:用ThreeJs为你的网站打造个性的动画背景
- 华为p40android auto,华为P40系列表现究竟如何?看权威媒体专业点评
- 安卓取消apple music订阅
- EXCEL 实现所有子表条件筛选汇总到新表