微服务Docker容器化自动部署

标签: Docker学习  docker

目录

 

阿里云镜像仓库配置

​ Maven插件实现springcloud微服务容器化自动部署

1、配置maven环境

2、修改宿主机的docker配置

3、自动化部署微服务项目


阿里云镜像仓库配置

1、登录阿里云:https://account.aliyun.com/login/login.htm , 然后进入管理控制台,选择容器镜像服务,点击镜像仓库。

注意:第一次进入可能会出现如下提示,则设置一下阿里云 Docker 镜像仓库传统一密码。 特别注意 :后面上传镜像时,用的就是这个设置的密码, 帐号还是登录阿里云的帐号。

2.、创建一个公开镜像仓库

 

3、点击镜像库可以看到操作指南中有登陆上传拉取镜像的命令。

 Maven插件实现springcloud微服务容器化自动部署

1、配置maven环境

2、修改宿主机的docker配置

  • 修改宿主机的docker配置,让其docker服务可以远程访问, 暴露的docker服务端口号 2375。
vim /lib/systemd/system/docker.service

 

  • 在 ExecStart= 后添加加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

 

  • 0.0.0.0 代表所有 ip ,也可指定 ip。修改后如下:
  • 刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker

 

  • 验证是否生效,访问:http://192.168.10.11:2375/version , 响应如下内容则成功:

3、自动化部署微服务项目

(没有学习微服务的朋友,可以先了解一下微服务和springcloud)

部署配置中心

1、在 Maven 的安装目录下的 settings.xml 文件中添加阿里帐号和镜像固定密码
<servers>
	<server>
	  <!--maven的pom中可以根据这个id找到这个server节点的配置-->  
	  <id>docker-aliyun</id>
	  <!--这里是在阿里云注册的账号-->
	  <username>在阿里云注册的账号</username>
	  <!--这里是在阿里云注册的密码-->
	  <password>在阿里云注册的密码</password>
	</server>
  </servers>

2、在配置中心工程的 pom.xml 增加插件配置(根据自己的具体情况做一些修改)

<build>
    <!-- 打jar包的文件名 -->
    <finalName>config</finalName>
    <plugins>
        <!-- 插件一定要在其他构建插件之上,否则打包文件会有问题。 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker的maven插件,官网:
              https://github.com/spotify/docker-maven-plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <!--生成镜像相关配置-->
            <configuration>
                <!-- 将forceTags设为true,这样就会覆盖构建相同标签的镜像  -->
                <forceTags>true</forceTags>
                <!-- 远程 docker 宿主机地址, 端口号是/lib/systemd/system/docker.service所暴露的端口号, 生成镜像到docker中 -->
                <dockerHost>http://192.168.10.11:2375</dockerHost>
                <!--内容是之前修改的maven的settings.xml配置文件中,server节点的id-->
                <serverId>docker-aliyun</serverId>
                <!-- 镜像名:阿里云镜像仓库地址
                            ${project.artifactId}引用当前工程名,
                            ${project.version}引用当前工程版本号
                            registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名:版本号 -->
                <imageName>registry.cn-hangzhou.aliyuncs.com/haogenmin_study/${project.artifactId}:${project.version}</imageName>
                <!--基础镜像-->
                <!--<baseImage>jdk1.8</baseImage>-->
                <baseImage>java</baseImage>
                <!--类似于Dockerfile的ENTRYPOINT指令-->
                <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                <resources>
                    <resource>  <!-- 指定打包的资源文件 -->
                        <targetPath>/</targetPath> <!-- 指定要复制的目录路径,这里是当前目录 -->
                        <directory>${project.build.directory}</directory> <!-- 指定要复制的根目录,这里是target目录 -->
                        <include>${project.build.finalName}.jar</include> <!-- 这里指定最后生成的jar包 -->
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>

3、打包上传到阿里云

 
 
宿主机查看:
 
 
阿里云查看:
4、在容器中启动项目
 
5、访问检查
这是我放在git上的配置文件,通过配置中心微服务请求到了数据,说明运行成功。
 
部署Eureka注册中心
 
1、先保证配置中心的服务开启,注册服务需要配置中心的配置文件
 
2、在阿里云创建一个相应的仓库
 
 
3、修改eureka的配置文件中需要更改的IP地址,因为转移到生产环境运行,IP自然不同。
 
 
4、在eureka项目pom文件中增加插件配置,同上,然后同样打包上传运行。
 
 
5、测试结果
 
部署一个注册在注册中心的服务提供者
1、先启动mysql,rabbitmq等需要的容器,前面几篇有说过启动步骤。
 
2、同理修改项目中相应的IP和端口。
 
3、增加插件配置。
 
4、打包,上传,运行。
 
 
 
(微服务的知识有机会再分享)
 
版权声明:本文为haogenmin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/haogenmin/article/details/105944481

智能推荐

bireme数据源同步工具--debezium+kafka+bireme

1、介绍 Bireme 是一个 Greenplum / HashData 数据仓库的增量同步工具。目前支持 MySQL、PostgreSQL 和 MongoDB 数据源 官方介绍文档:https://github.com/HashDataInc/bireme/blob/master/README_zh-cn.md 1、数据流 Bireme 采用 DELETE + COPY 的方式,将数据源的修改记...

一致性hash算法

散列(hash)在我看来就是一个数组,而与数组不同的点在于数组是按顺序写入的,而hash是按照一定的hash算法确定元素在数组中的位置的。hash最难的问题在于会有冲突出现,如果两个object根据相应的hash算法得出的值一样便产生了hash冲突。在所有解决hash冲突的方法中,我最欣赏的是链式解决法,即将hash到同一位置的元素用链表连接。当然还有其它几种处理hash冲突的算法,比如建立公共溢...

OpenCV-Python learning-1.安装,图片读取显示

1. OpenCV与OpenGL区别 https://www.zhihu.com/question/20212016 一个是让机器识别东西的,OpenCV是给电脑做眼睛的。 一个是让机器计算出更好画面的,OpenGL用在游戏渲染方面很多。 OpenCV(Open Source Computer Vision Library)是一个基于(开源)发行的跨平台计算机视觉库,OpenGL(全写Open G...

Mycat+Mysql分布式架构改造和性能压力测试

架构实现 Mycat作为数据库高可用中间件具备很多的功能,如负载均衡,分库分表,读写分离,故障迁移等。结合项目的实际情况,分库分表功能对于关联查询有很高的要求,需要从业务角度考虑分库分表后的关联查询SQL的分析,业务代码动作较大,所以在此方案中我们不考虑分库分表。主要应用Mycat的负载均衡及故障迁移的功能即可。 整个架构改造包括两个部分,第一是单例Mysql改为多个Mysql,同时负载均衡,并且...

人脸识别之疲劳检测(二)阈值法、KNN分类和K-means聚类

Table of Contents 1、均值法 2、中值法 3、KNN 4、K-means 结合上一节在获得人眼特征点后需要对睁眼闭眼状态做出判断,方法的选择需要经验结合公平的评价方法,使用大量测试集得到不同方法下的精确度并做出比较: 1、均值法 50帧睁眼数据取均值,得到不同阈值下精确度。 2、中值法 50帧睁眼数据取中值,得到不同阈值下精确度。 3、KNN KNN是一种ML常用分类算法,通过测...

猜你喜欢

CodeForce Tic-Tac-Toe

Two bears are playing tic-tac-toe via mail. It's boring for them to play usual tic-tac-toe game, so they are a playing modified version of this game. Here are its rules. The game is played on the foll...

Python雾里看花-抽象类ABC (abstract base class)

首先认识模块 abc,python中没有提供抽象类与抽象方法,然而提供了内置模块abc来模拟实现抽象类,例如提供泛映射类型的抽象类 abc.MutableMapping 继承abc.MutableMapping构造一个泛映射类型(类似python中的dict) 当然继承abc.Mapping 也可以,毕竟MutableMapping是其子类 dict是python中典型的映射类型数据结构,其接口的...

python 文件操作

2, with open (‘xx.txt’,‘w’,encoding=‘utf-8’) as f: f.write(‘文件内容或对象’)...

【Python基础】使用统计函数绘制简单图形

机器学习算法与自然语言处理出品 @公众号原创专栏作者 冯夏冲 学校 | 哈工大SCIR实验室在读博士生 2.1 函数bar 用于绘制柱状图 2.2 函数barh 用于绘制条形图 2.3 函数hist 用于绘制直方图 直方图与柱状图的区别 函数pie 用于绘制饼图 2.5 函数polor 用于绘制极线图 极线图是在极坐标系上绘出的一种图。在极坐标系中,要确定一个点,需要指明这个点距原点的角...

css:顶部按钮固定,上面内容滑动

这种需求我们平时见到很多的,实现方法也多的参差不齐,下面我说一种简单的。如图: 可以看到只有红线部分滚动,底下按钮是固定的。 代码...