微服务架构实战:云服务环境与Docker部署工具

本文介绍了如何安装Docker,使用docker-compose进行应用部署,包括镜像创建、docker-compose.yml配置,以及私有镜像仓库的创建和使用。此外,还提及了DockerSwarm和Kubernetes等高级工具的应用。
摘要由CSDN通过智能技术生成

最后,使用下列命令开始安装:

#yum install docker-engine

安装需要一定的时间, 并且会通过网络下载一些安装文件。

安装完成后可以使用下列命令启动Docker:

service docker start

使用下列命令检查版本:

docker --version

使用下列命令查看详细的版本信息:

docker version

使用”下列命令可以将Docker设置为开机启动:

systemctl enable docker

更多有关Docker的信息,读者可以到其官方网站查看。

docker-compose 的下载及配置

docker-compose是一个通 过编排脚本来使用Docker引擎的工具组件,这一工具组件使得我们不必记住那么多的命令和配置参数,即可更加方便和快速地进行应用的部署和更新。

使用下列命令可以将已经编译的docker- compose下载到本地系统中:

curl -L https://github.com/ docker/compose/ releases/download/1.16.0-rc2/

docker-compose- uname -s’-'uname -m > /usr/local/bin/docker-compose

其中,“1.16.0-rc2” 为版本号,可以先从GitHub上查看docker-compose的最新版本,然后更改.上面命令中的版本号,即可下载最新的版本。

下载完成后执行下列命令,更改docker-compose的执行权限:

chmod +x /usr/ local/bin/docker-compose

使用下列命令查看docker compose的版本号:

docker-compose version

执行下列命令可以输出docker -compose的完整帮助信息:

docker-compose -h

对于docker-compose,我们常用的命令有build、up、ps、 start、 stop、 down 和logs等。如果要发布一个微服务,则只需使用一个up命令就足够了。

另外,还可以使用help命令查看每一-个命令的详细帮助信息。例如,可以使用下列命令查看down命令的使用说明:

docker -compose help down

使用Docker方式发布微服务

===============

在使用Docker运行一个服务时,首先必须创建这个服务的镜像,然后使用这个镜像创建容器并运行服务。在同一主机中,一个镜像可以创建多个容器副本,所以在-一个主机中,也可以为所部署的服务做有限度的扩展部署。

镜像创建 及其生成脚本

在创建镜像时,我们需要一个生成脚本, 然后将脚本文件与Jar 包- -起上传到服务器的特定目录中,这样就可以用来生成应用的镜像了。创建镜像的脚本有一个固定的名字: Dockerfile。

一般来说,脚本内容如下所示:

FROM java:8

VOLUME / tmp

ADD demo-1 .0-SNAPSHOT.jar app.jar

RUN bash -c ‘touch /app.jar’

RUN /bin/cp /usr/share/ zoneinfo/Asia/Shanghai /etc/1ocaltime \

&& echo ,Asia/Shanghai’ >/etc/ timezone

EXPOSE 8080

ENTRYPOINT

I [“java”, “-Djava. security. egd=file:/dev/ ./urandom” , “-jar” ,“/app.jar”]

这个脚本表示,引用Java 8镜像将项目的Jar包生成- -个由 JDK 1.8 支撑的镜像。其中,EXPOSE指定了运行服务时设定的端口号,并且设定了Shanghai时区,目的是在容器运行时,其输出的日志能够显示正确的时间。

对于我们所开发的微服务应用来说,都可以参照这个脚本创建镜像,只需修改相关的发布包文件名和端口号即可。

服务的发布 与更新

在部署服务时,可以创建- -个目录(例如demo)来放置上传的Dockerfile和打包文件,然后在其上一层目录中再创建一一个 docker-compose.yml文件,并使用这一文件编排部署脚本。对于这个例子来说,可以编排如下所示的脚本:

demo:

build: . /demo

ports:

“8080:8080”

然后,使用docker-compose的up命令部署应用,代码如下所示:

docker -compose up -d

这个命令已经包含了镜像的创建、容器的生成和启动等一系列操作。 其中,参数-d 表示在后台中运行。

使用下列命令查看运行的容器:

docker-compose ps

使用下列命令查看容器的输出日志:

docker logs容器ID或名称

当需要删除已经部署的容器和已经创建的镜像时,只需使用一个down命令即可完成所有

的操作,代码如下所示:

docker-compose down --rmi all

运行这个命令将停止由编排脚本管理的所有容器,同时还将刪除相关的容器和镜像。

从上面的演示可以看出,使用docker-compose来部署一一个应用是非常 方便的,我们只需使用一个简单的命令就可以完成所有操作。

使用 Docker部署日志分析平台

=================

我们可以使用一个统一的 日志分析平台管理微服务应用生成的日志,这将给8志的查询和使用提供极大的方便。

日志分析平台ELK由三个服务组成,分别是Elasticsearch、Logstash 和Kibana。其中:

◎Elasticsearch 是- -个分布式搜索分析引擎,负责日志存储并提供搜索功能。

◎Logstash 是一个开源数据处理管道,能提供数据收集、加工和传输管道的服务,负责日志收集。

◎Kibana是一个数据可视化平台,可以将数据分析结果转化为图表等形式,即提供了Web查询的操作界面。

因为日志分析平台ELK中的三个服务都是开源的,并且已经发布到公域的镜像仓库中,所以我们可以使用docker- compose工具编写脚本进行部署和安装。

首先,在服务器上创建-一个目录,代码如下所示:

mkdir /logstash

进入这个目录之后,使用如下命令创建-一个配置 文件:

vi logstash. conf

文件的内容如下所示: .

input

top {

port => 5000

codec => j son

udp

port => 5000

codec => json

| output

elasticsearch { hosts => [ “elasticsearch:9200” ] }

}

其次,使用如下命令创建一-个编排脚本文件:

vi docker-compose. ym1

在文件中编写如下所示内容:

logstash:

image: logstash:5.4.0

volumes:

一./logstash. conf: /etc/logstash. conf

ports:

一"5000: 5000/tcp"

“5000: 5000/udp”

links:

一elasticsearch

command:

-f /etc/logstash. conf

elasticsearch:

image: elasticsearch:5.4.0

kibana:

image: kibana:5.4.0

links:

一elasticsearch

ports:

一"5601 :5601"

其中,三个服务的版本号必须统一 。最后,使用如下命令启动服务:

docker-compose up -d

第一次启动时需要一定 的时间,因为需要从镜像仓库中拉取相关的镜像。

在启动成功之后,就可以使用日志分析平台了。即可以使用docker-compose中的start. stop .等命令执行平台的启动或关闭等操作。

在应用工程中,想要使用日志分析平台的日志收集功能,就必须通过日志配置文件logback.xml进行配置。一个完整的日志配置文件中的内容如下所示:

<?xml version="1.0" encoding="UTF-8"?>

d{yyYy-MM-dd HH:mm:ss .SsS} [&thread] %-51evel &1ogger{50}

8msg&n

<appender name=“stash” class="net.logstash. logback. appender.

LogstashTepSocketAppender">

10. 10.10.32: 5000

<encoder charset= “UTF-8”

class=“net . logstash. logback. encoder . LogstashEncoder” />

</ appender>

</ appender>

show parameters for hibernate sql 专为Hibernate 定制–>

<logger name=“org . hibernate. type . descriptor . sql. BasicBinder”

level=“TRACE” />

<logger name=“org . hibernate. type . descriptor .sq1. BasicExtractor”

| level=“DEBUG” />

</ root>

其中,通过“10.10.10.325000”设置了日志收集平台的服务器IP地址和端口号,读者可以

根据实际情况进行更改。

基于Docker的高级部署工具.

================

我们可以在使用Docker引擎的基础上,使用更加高级的工具来管理,现在比较流行的工具有Docker Swarm和Kubernetes等。

私域镜像仓库

为了更好地配合高级工具的应用部署,应该创建-一个私有的镜像仓库,将需要部署的镜像存放在镜像仓库中,这样在后面需要使用部署工具时,就可以从镜像仓库直接拉取镜像了。

假设私域镜像域名为imags.demo.net, 并且在镜像仓库中创建了一个项目test,还为这个项

目指定了相关用户及其读写权限,即可使用如下命令登录镜像仓库:

docker login imags. demo.net

根据提示,输入镜像仓库分配的用户名和密码。

这样,我们就可以上传Jar包和Dockerfile文件,然后在当前目录中使用下列命令来创建镜像了:

docker build一七imags. demo. net/test/example:1.0.0

在这个命令中,我们指定了镜像的名字和版本号,如果创建成功,则可以看到类似于如下所示的输出信息:

Successfully built 24d82a696eef

Successfully tagged imags . demo .net/test/example:1.0.0

镜像创建成功之后,即可使用如下命令将生成的本地镜像推送到镜像仓库:

docker push imags. demo.net/test/example:1.0.0

如果操作成功,则可以看到如下所示的输出信息:

The push refers to repository [imags. demo. net/test/example]

dd6bb0471434: Pushed

f07ed18457b0: Pushed

3929c58ac07b: Pushed

1.0.0: digest:

sha256: 4c51a34a68054524ecd31b724047c232802c7c85334499d0b7119abcf329a634 size:

2631

当把需要发布的镜像都创建成功之后,就可以使用更加高级的工具直接从镜像仓库中拉取镜像,来创建各种服务了。

Docker Swarm

Docker Swarm是Docker官方提供的一款 Docker集群管理工具,它的架构如图12-2所示。

微服务架构实战:云服务环境与Docker部署工具

Docker Swarm可以通过集群方式管理多个安装有Docker引擎的主机。在Docker Swarm中,是通过管理节点SwarmManager来管理集群中的所有工作节点SwarmNode的。应用部署必须在管理节点上进行,管理节点提供了集群中Docker主机的调度和服务发现等功能。

基于12.6.1 节创建的镜像,我们可以创建一一个脚本 文件example.yml,在Docker Swarm环境中发布服务,脚本内容如下所示:

version: ’ 3

services:

example-app:

image: imags . demo . net/test/example:1.0.0

deploy:

replicas: 2

#定义replicated 模式服务的副本数量

update_ config:

parallelism: 1

#每次更新副本数量

delay: 2s

#每次更新间隔

restart_ policy:

condition: on- failure

#定义服务的重启条件

networks:

金core

ports:

  • “8080”

networks:

core:

external: true

使用如下命令发布服务:

docker stack up -C example. yml --with-registry-auth example-app

使用如下命令查看服务:

Java面试核心知识点笔记

其中囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

Java中高级面试高频考点整理

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

最后分享Java进阶学习及面试必备的视频教学

蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6

net/test/example:1.0.0

deploy:

replicas: 2

#定义replicated 模式服务的副本数量

update_ config:

parallelism: 1

#每次更新副本数量

delay: 2s

#每次更新间隔

restart_ policy:

condition: on- failure

#定义服务的重启条件

networks:

金core

ports:

  • “8080”

networks:

core:

external: true

使用如下命令发布服务:

docker stack up -C example. yml --with-registry-auth example-app

使用如下命令查看服务:

Java面试核心知识点笔记

其中囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。

[外链图片转存中…(img-lW93yYGA-1714198730301)]

Java中高级面试高频考点整理

[外链图片转存中…(img-e1QUOOIZ-1714198730301)]

[外链图片转存中…(img-BGcgcWY0-1714198730301)]

最后分享Java进阶学习及面试必备的视频教学

[外链图片转存中…(img-Iysk3h2Q-1714198730302)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
你可以按照以下步骤在阿里云服务器上使用宝塔面板部署Spring Boot项目: 1. 登录阿里云服务器并安装宝塔面板。 - 可以参考宝塔官方文档安装宝塔面板:https://www.bt.cn/bbs/thread-19302-1-1.html 2. 在宝塔面板中创建网站。 - 在宝塔面板中,点击左侧菜单的网站,然后点击“添加站点”按钮。 - 输入网站域名和路径,并选择适当的PHP版本。 - 点击“添加站点”按钮完成网站创建。 3. 配置域名解析。 - 在域名的DNS管理平台上,添加一条A记录,将域名指向你的阿里云服务器的IP地址。 4. 配置数据库。 - 在宝塔面板中,点击左侧菜单的数据库,然后点击“添加数据库”按钮。 - 输入数据库名称、用户名和密码,并选择合适的字符集和排序规则。 - 点击“创建”按钮完成数据库创建。 5. 上传Spring Boot项目文件。 - 在宝塔面板中,点击左侧菜单的文件,然后进入网站根目录。 - 点击“上传文件”按钮,选择你的Spring Boot项目文件并上传到网站根目录。 6. 配置Nginx反向代理。 - 在宝塔面板中,点击左侧菜单的网站,然后点击你的网站域名进入网站设置。 - 在“反向代理”选项卡中,点击“添加反向代理”按钮。 - 输入反向代理的目标URL(如http://localhost:8080)和域名。 - 点击“添加”按钮完成反向代理配置。 7. 部署Spring Boot项目。 - 在宝塔面板中,点击左侧菜单的网站,然后点击你的网站域名进入网站设置。 - 在“应用管理”选项卡中,点击“添加应用”按钮。 - 选择“Java”作为应用类型,并填写相应的参数(如应用名称、JDK路径、JAR包路径等)。 - 点击“保存”按钮完成应用配置。 8. 启动Spring Boot项目。 - 在宝塔面板中,点击左侧菜单的应用,然后点击你的应用名称进入应用管理页面。 - 点击“启动”按钮启动你的Spring Boot项目。 通过以上步骤,你就可以在阿里云服务器上使用宝塔面板成功部署Spring Boot项目了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值