 作者简介,愚公搬代码 《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。 《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 欢迎 点赞✍评论⭐收藏

文章目录

前言一、Docker-Compose1.Docker-Compose曆1.1 初识DockerCompose曆1.2 安装DockerCompose曆1.3 部署微服务集群☀️1.3.1 compose文件☀️1.3.2 修改微服务配置☀️1.3.3 打包☀️1.3.4 拷贝jar包到部署目录☀️1.3.5 部署

感谢:给读者的一封信

前言

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以在单个文件中定义多个容器应用程序,然后使用单个命令启动所有容器。Compose 还允许您管理应用程序的配置和数据卷。

Compose 使用一个 YAML 文件来定义组成应用程序的容器、网络和卷。YAML 文件包括每个容器的配置选项,例如要使用的 Docker 映像、要设置的环境变量和要挂载的卷。

一旦您使用 Compose 定义了应用程序,就可以使用 docker-compose up 命令启动所有容器,以及任何必要的网络和卷。Compose 会自动管理容器依赖项,在正确的顺序中启动和停止它们。

Docker Compose 简化了构建和部署多容器 Docker 应用程序的流程。

一、Docker-Compose

1.Docker-Compose

Docker Compose是一个用于定义和运行多个Docker容器应用程序的工具。它允许您在一个文件中描述整个应用程序的组成部分,包括容器、网络、卷以及容器之间的链接和依赖关系。使用Docker Compose,您可以轻松地启动、停止和管理整个应用程序,使得容器化应用程序的部署更加容易和高效。同时,Docker Compose还可以轻松地扩展和升级应用程序,以适应不同的场景和需求。

曆1.1 初识DockerCompose

Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。格式如下:

version: "3.8"

services:

mysql:

image: mysql:5.7.25

environment:

MYSQL_ROOT_PASSWORD: 123

volumes:

- "/tmp/mysql/data:/var/lib/mysql"

- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"

web:

build: .

ports:

- "8090:8090"

上面的Compose文件就描述一个项目,其中包含两个容器:

mysql:一个基于mysql:5.7.25镜像构建的容器,并且挂载了两个目录web:一个基于docker build临时构建的镜像容器,映射端口时8090

DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/

其实DockerCompose文件可以看做是将多个docker run命令写到一个文件,只是语法稍有差异。

曆1.2 安装DockerCompose

以下是在 CentOS 上安装 Docker Compose 的步骤:

首先,确保已经安装 Docker。可以使用以下命令检查 Docker 是否已经安装:

docker --version

安装 Docker Compose 的前置依赖:

sudo yum install -y curl

使用以下命令下载 Docker Compose 的二进制文件:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

注意:此处下载的是 Docker Compose 的 1.29.2 版本,可根据需要更改版本号。

赋予 Docker Compose 二进制文件可执行权限:

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

使用以下命令检查 Docker Compose 是否已经安装:

docker-compose --version

如果输出了版本号,则说明已经成功安装 Docker Compose。

曆1.3 部署微服务集群

☀️1.3.1 compose文件

项目cloud-demo文件夹,里面已经编写好了docker-compose文件,而且每个微服务都准备了一个独立的目录:

内容如下:

version: "3.2"

services:

nacos:

image: nacos/nacos-server

environment:

MODE: standalone

ports:

- "8848:8848"

mysql:

image: mysql:5.7.25

environment:

MYSQL_ROOT_PASSWORD: root

volumes:

- "$PWD/mysql/data:/var/lib/mysql"

- "$PWD/mysql/conf:/etc/mysql/conf.d/"

ports:

- "3306:3306"

userservice:

build: ./user-service

orderservice:

build: ./order-service

gateway:

build: ./gateway

ports:

- "10010:10010"

可以看到,其中包含5个service服务:

nacos:作为注册中心和配置中心

image: nacos/nacos-server: 基于nacos/nacos-server镜像构建environment:环境变量

MODE: standalone:单点模式启动 ports:端口映射,这里暴露了8848端口 mysql:数据库

image: mysql:5.7.25:镜像版本是mysql:5.7.25environment:环境变量

MYSQL_ROOT_PASSWORD: 123:设置数据库root账户的密码为123 volumes:数据卷挂载,这里挂载了mysql的data、conf目录,其中有我提前准备好的数据 userservice、orderservice、gateway:都是基于Dockerfile临时构建的

查看mysql目录,可以看到其中已经准备好了cloud_order、cloud_user表:

查看微服务目录,可以看到都包含Dockerfile文件:

内容如下:

FROM java:8-alpine

COPY ./app.jar /tmp/app.jar

ENTRYPOINT java -jar /tmp/app.jar

☀️1.3.2 修改微服务配置

因为微服务将来要部署为docker容器,而容器之间互联不是通过IP地址,而是通过容器名。这里我们将order-service、user-service、gateway服务的mysql、nacos地址都修改为基于容器名的访问。

如下所示:

spring:

datasource:

url: jdbc:mysql://mysql:3306/cloud_order?useSSL=false

username: root

password: 123

driver-class-name: com.mysql.jdbc.Driver

application:

name: orderservice

cloud:

nacos:

server-addr: nacos:8848 # nacos服务地址

☀️1.3.3 打包

接下来需要将我们的每个微服务都打包。因为之前查看到Dockerfile中的jar包名称都是app.jar,因此我们的每个微服务都需要用这个名称。

可以通过修改pom.xml中的打包名称来实现,每个微服务都需要修改:

app

org.springframework.boot

spring-boot-maven-plugin

打包后:

☀️1.3.4 拷贝jar包到部署目录

编译打包好的app.jar文件,需要放到Dockerfile的同级目录中。注意:每个微服务的app.jar放到与服务名称对应的目录,别搞错了。

user-service:

order-service:

gateway:

☀️1.3.5 部署

部署:

进入cloud-demo目录,然后运行下面的命令:

docker-compose up -d

部署完成就可以访问网站测试效果

感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

精彩文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。