当前位置: 首页 > 编程日记 > 正文

Spring cloud 微服务docker容器化最佳实践

Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布
采用了dockerfile-maven-plugin插件发布镜像到远程docker主机,该部分详细教程请看 使用Maven插件快捷打包发布远程Docker镜像

添加docker插件依赖

如何开放远程docker主机远程控制端口请看 使用Maven插件快捷打包发布远程Docker镜像

# 可以直接在父工程pom内添加插件,各子项目将自动继承插件依赖
<build><plugins><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.4.0</version><configuration><repository>${docker.image.prefix}/${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin></plugins>
</build>

添加Dockerfile文件

需要为各需要发布为docker镜像的服务项目在其根目录添加Dockerfile文件

# dockerfile 基础配置
FROM daocloud.io/library/java:8u40-b22
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} /app/app.jar
WORKDIR /app/
# 该镜像需要暴露的接口
EXPOSE 8889
ENTRYPOINT ["java","-jar","./app.jar"]

执行发布镜像

mvn clean package dockerfile:build -DskipTests

这里写图片描述
可以看到微服务中的各服务项目都被已经被发布到了远程docker镜像

运行

将各服务都跑起来

docker run -d -p 8889:8889 --name hnister-eureka-server hnister/hnister-eureka-server

但现在还有一个问题就是如何引入mysql等组件到docker中呢

数据库等服务的引入

如何构建一个外部可访问的mysql docker容器请看:Docker 构建Mysql容器并对外提供服务

容器间网络互通

现在各镜像已经构建完毕,如何让各容器相互访问呢,以前docker采用link的方式,但这种方式已经不被推荐了。
我们可以采用network来方便快捷的达成我们所期望的效果;

创建一个新的network

创建新network

docker network  create hnister

这里写图片描述
network被创建成功,在运行容器时指定network

# 通过--network 结合 --network-alias 指定网络
docker run -d -p 8889:8889 --name hnister-eureka-server --network hnister hnister/hnister-eureka-server
docker run -d -p 8889:8889 --name hnister-mysql --network hnister --network-alias mysql.hnister.cn mysql

对已经运行的容器链接到network,而其他服务在加入了该network后可以通过alias来访问主机如链接到数据库mysql

jdbc:mysql://mysql.hnister.cn/hnister

对于已经启动的容器可以使用命令来加入自建network

docker network connect hnister hnister-eureka-server

这样所有的容器就都在一个network内了可以相互访问

相关文章:

sqlserver用sql语句创建链接服务器

2019独角兽企业重金招聘Python工程师标准>>> --创建 exec sp_addlinkedserver SHUA_LINK, , SQLOLEDB, 数据库IP exec sp_addlinkedsrvlogin SHUA_LINK, false,null, sa, 密码--查询 select top 10 * from SHUA_LINK.shua.dbo.shua_member order by regtime des…

[POJ3261] Milk Patterns

LINK 此题的常规做法是 二分 后缀数组 &#xff0c;但本蒟蒻还是习惯写 并查集 的做法 算法流程 1.离散化是肯定要有的&#xff0c;给的数据太大了&#xff0c;不离散化会RE 2.先跑一遍SA&#xff0c;把最重要的h数组求出来 3.把h从大到小排序&#xff0c;从大到小枚举重复串的…

风格化手绘纹理包 CGTrader – Stylized Mix Vol. 41 – Hand Painted Texture Pack

风格化手绘纹理包 CGTrader – Stylized Mix Vol. 41 – Hand Painted Texture Pack CGTrader–风格化混合第41卷–手绘纹理包 大小解压后&#xff1a;343M 信息: 7种风格化材料的包装。格式&#xff1a;. png .uproject .unitypackage 特点: 7种独特的纹理 包括基础颜色/正…

linux开发log示例,RH124-log Linux日志(示例代码)

课程笔记#日志目录[[email protected] log]$ ls /var/log/amanda cron-20170531 glusterfs messages#日志管理服务[[email protected] log]$ systemctl is-active rsyslog.serviceactive#日志服务配置文件[[email protected] log]$ cat /etc/rsyslog.conf# rsyslog configurati…

xamarin 断点 不命中

Async Debugging Breakpoints not being hit breakpoint in Android library project not hit when disable fastdebug and linking sdk assemblies only https://bugzilla.xamarin.com/show_bug.cgi?id17512转载于:https://www.cnblogs.com/zjoch/p/4836883.html

2022-2028年中国饮水机市场投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国饮水机行业市场行业相关概述、中国饮水机行业市场行业运行环境、分析了中国饮水机行业市场…

编辑模式下,控制对象移动

有时候我们可能会有这样的需求&#xff0c;就是在编辑模式下&#xff0c;控制移动场景中的物体&#xff0c;这里面有两个点要解决&#xff1a; &#xff08;1&#xff09;怎么在编辑模式下运行一个脚本&#xff1b; &#xff08;2&#xff09;怎么有效地响应鼠标按键。 第一个问…

2019.07.16

三次握手TCP报文指针内容&#xff1a; 1.URG&#xff1a;紧急指针&#xff0c;当URG1&#xff0c;表明紧急指针字段有效&#xff0c;告诉系统报文有紧急内容。 2.ACK: 确认指针&#xff0c;当ACK1&#xff0c;确认号字段有效。 3.PSH&#xff1a;推送指针&#xff0c;当两个应…

3Dmax+V-Ray学习建筑可视化教程

3DmaxV-Ray学习建筑可视化教程 视频:19201080&#xff0c;. mp4&#xff0c;25 fps |音频:AAC-LC&#xff0c;253 kb/s 2通道&#xff0c;48.0 KHz |流派:电子学习 软件:3Ds Max |时长:5小时 |语言&#xff1a;英语中英文字幕&#xff08;机译&#xff09;|文件大小:3.2 GB …

linux的自定义input,Linux Input子系统之第一篇(input_dev/input_handle/input_handler)

Input子系统是linux kernel中与部分外围器件驱动联系比较紧密的模块&#xff0c;常用于Sensor&#xff0c;TP(touch panel)&#xff0c;power key等器件的驱动。这类模块有个共同特点&#xff1a;字符设备&#xff0c;且数据量都不大&#xff0c;比如sensor一般最多只有xyz三个…

为什么不记录慢速查询?

㈠ 底&#xff1a;2014/8/18 13点37分收到前端说反馈有玩家掉线情况&#xff0c;检查CPU、慢查询、DB请求量&#xff0c;并未发现异常&#xff0c;DB表现一如往常。㈡ 定位原因&#xff1a;INSERT INTO t (col1, col2, col3, col4, col5, col6, col7) VALUES (3532082239485507…

docker常用命令详解

docker常用命令详解 本文只记录docker命令在大部分情境下的使用&#xff0c;如果想了解每一个选项的细节&#xff0c;请参考官方文档&#xff0c;这里只作为自己以后的备忘记录下来。 根据自己的理解&#xff0c;总的来说分为以下几种&#xff1a; Docker环境信息 — docker…

Unity3D脚本属性

Unity3D的脚本属性用法&#xff1a; // JavaScriptscript AddComponentMenu ("Transform/Follow Transform") // CSharp [AddComponentMenu("Transform/Follow Transform")] 以下是具体说明&#xff08;部分无关紧要的不翻译&#xff09;&#xff1a; Add…

Linux下查看.so和可执行文件是否debug编译

如何判断一个.so是否是debug编译的&#xff1f; 如果用此方法&#xff1a;用file来查看一个.so, 根据是否包含”not stripped”来判断该.so是否是debug编译的。然而stripped/not stripped并不是debug/release编译的判断标准. 对debug和release的.so运行file后可得出几乎相同的输…

UE商城资源 Motion Symphony 运动匹配插件

UE商城资源 Motion Symphony 运动匹配插件 Unreal Engine虚幻游戏引擎素材资源 Unreal Engine Marketplace –Motion Symphony 1.05 4.26运动交响曲插件 插件大小解压后&#xff1a;346M 资源大小共 2G 含官方文档 和官方使用视频教程&#xff08;共100分钟 1920X1080 mp4 中…

linux下出现重定义,Oracle Online Redefinition在线重定义

在线重定义特性进行数据表Online的结构变动操作。本篇我们从一个较复杂的案例出发&#xff0c;讨论复杂变化情况下如何进行Online Redefinition&#xff0c;以及dbms_redefinition包各个关键方法的作用。3、一个分区表的重定义动作我们定义一个数据表T。SQL> create table t…

Lr IP欺骗设置

IP欺骗设置IP工具&#xff1a;IP Wizard 开启IP欺骗时会关闭DHCP&#xff08;也就是关闭IP自动获取 更改为手动设置IP&#xff09; 注&#xff1a;添加IP欺骗&#xff0c;和释放IP&#xff0c;都要重启机器后才会生效&#xff0c;IP Wizard要管理员身份运行&#xff1b; 在con…

2022-2028年中国异戊二烯橡胶产业竞争现状及发展规模预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国异戊二烯橡胶行业市场行业相关概述、中国异戊二烯橡胶行业市场行业运行环境、分析了中国异…

Mysql新安装服务启动失败

#备注如果新安装的mysql启动报错,请检查my.cnf文件的innodb_buffer_pool_size设置的值&#xff0c;最好为内存的总大小的70%。转载于:https://blog.51cto.com/azhuang/1553167

js实现图片上传本地预览

演示地址&#xff1a;https://xibushijie.github.io/static/uploadImg.html <!DOCTYPE> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>图片上传本地预览</title><style…

Unity增强现实初学者指南视频教程 A Beginner’s Guide to Augmented Reality with Unity

Unity增强现实初学者指南视频教程 A Beginner’s Guide to Augmented Reality with Unity MP4 |视频:h264&#xff0c;1280720 &#xff08;部分1920X1080&#xff09; |音频:AAC&#xff0c;44100 Hz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&a…

c语言中变量有什么作用是什么,C语言里面局部变量和临时变量有什么区别?

typedefexternstatic_Thread_localregister其中&#xff0c;除了 typedef (放在这里仅仅是为了描述语法方便)&#xff0c;其它几个(配合变量声明的位置)描述了的变量的 linkage 和 storage duration。但是 storage class specifier 跟 linkage / storage duration 并不是一一对…

Android Acitivity 生命周期

Fragment 的生命周期&#xff1a; Android Fragment 生命周期及其API使用&#xff08;建议使用自定义View替换Fragment&#xff09; Activity的生命周期&#xff1a; (1)启动Activity&#xff1a;系统会先调用onCreate方法&#xff0c;然后调用onStart方法&#xff0c;最后调用…

Docker入门六部曲——基本引导

原文链接&#xff1a;http://www.dubby.cn/detail.html?id8733 预备知识 虽然我们接下来还是会介绍很多概念&#xff0c;但是最好还是提前了解什么是Docker&#xff0c;和为什么你会使用Docker。 我们假设你对下面这些知识比较熟悉&#xff1a; IP地址和端口虚拟机编辑配置…

fragment切换事件

2019独角兽企业重金招聘Python工程师标准>>> 我使用fragment fragmenttabhost的时候&#xff0c;如果切换tab&#xff0c;对应的Fragment就会执行onDestroyView &#xff0c;再切换回来又会执行onCreateView()&#xff0c;如此反反复复。destroyView &#xff0c;c…

quartz关闭DBUG日志

使用quartz调度任务&#xff0c;每次启动产生大量debug日志&#xff0c;机器都要被累死了。 试过很多方法都不好使&#xff0c;包括在log4j.properties里配置 quartz源代码&#xff0c;发现它的日志输出用的是slf4j&#xff0c;而不是log4j,所以想到用logback.xml来控制。 把他…

UE卡通风格游戏场景制作视频教程

UE卡通风格游戏场景制作视频教程 UE卡通风格游戏场景制作视频教程 教程大小&#xff1a;4.53G 含项目文件 3840X2160 mp4 语言&#xff1a;英语中英字幕&#xff08;机译&#xff09; 本教程是关于UE4卡通渲染游戏环境场景制作训练视频教程&#xff0c;时长&#xff1a;4小时…

c语言顺序表有效元素长度,用C语言描述的顺序表类型

2.2.1 顺序表用C语言描述的顺序表类型如下所示&#xff1a;// 存储结构const int MAXLISTSIZE80; // 预设的存储空间最大容量typedef struct {ElemType *elem;    // 存储空间基址int length;      // 当前长度int listsize;     //允许的最大存储容量(以sizeof(E…

css样式之边框和内外边距

1、css样式之边框&#xff1a;border 实心的边框&#xff1a; <!DOCTYPE html><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <title>页面一</title> </head> <body>…

2022-2028年中国乙烷行业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国乙烷行业市场行业相关概述、中国乙烷行业市场行业运行环境、分析了中国乙烷行业市场行业的…