百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Spring Cloud Alibaba 利用Docker Composer搭建开发环境(一)

bigegpt 2024-10-12 06:01 10 浏览

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务,今天我们来介绍怎么使用Docker Compose搭建整套开发环境。


开篇

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。


01

Spring Cloud Alibaba组件介绍

组件

Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。


如何引入依赖

如果需要使用已发布的版本,在 dependencyManagement 中添加如下配置:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.3.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

然后在 dependencies 中添加自己所需使用的依赖即可使用。


02

环境准备


我手上有一台macbook,这次先用mac部署,有机会再写一个ubuntu的,基本差不多。

先晒出mackbook信息,不是高配,硬件配置和这差不多的应该都没问题。



第一步安装docker-toolbox, 阿里云上有个镜像。

http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/stable/

下载,安装。


安装好以后配置一下硬件信息:


这个时候可以试一下,是否安装好了,terminal试一下docker version:

?  ~ docker version
Client: Docker Engine - Community
 Cloud integration  0.1.18
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 16:58:31 2020
 OS/Arch:           darwin/amd64
 Experimental:      false
Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:07:04 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

docker-compose version:

?  ~    docker-compose -version
docker-compose version 1.27.4, build 40524192


正常情况下,我们的环境就全部准备好了,是不是很简单。

当然我们国内的环境(肉身翻墙或者有高速梯子跳过这步)是需要配置一个国内的docker加速器,国内的网速去docker hub下载镜像那得凉凉了。


配置阿里云加速器方法如下:

首先申请自己的阿里云私有镜像:

1.登陆阿里云:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

2.进入【控制台】-【镜像仓库】-【镜像中心】-【镜像加速器】

如果找不到菜单就直接搜【镜像仓库】会要求输入密码,输入即可,然后进入【镜像中心】-【镜像加速器】

获得自己的加速地址后:


{
  "features": {
    "buildkit": true
  },
  "experimental": false,
  "registry-mirrors": [
    "https://xxxxxx.mirror.aliyuncs.com"
  ]
}
重启服务。


用docker info命令查看是否配置成功,看下你的加速地址表示成功:

 Registry Mirrors:
  https://xxx.mirror.aliyuncs.com/
 Live Restore Enabled: false


Docker toolbox安装成功!!


03

docker-compse部署Mysql


创建docker文件夹,用于存放相应文件信息,创建docker-compose.yml文件。文件目录如下:

-rw-r--r--  1 xx  staff   1.1K 10 27 22:00 docker-compose.yml
drwxr-xr-x  3 xx  staff    96B 10 20 15:22 mysql

编写docker-compose.yml文件如下:

version: "3"
services:
  mysql:
    container_name: mysql
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    volumes:
      - /Users/xxxx/docker/mysql/data:/var/lib/mysql
    ports:
      - "3306:3306"
    restart: always

启动mysql镜像,输入命令:docker-compose up -d mysql, 运行如下:

?  docker docker-compose up -d mysql
Creating network "docker_default" with the default driver
Pulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
bb79b6b2107f: Pull complete
49e22f6fb9f7: Pull complete
842b1255668c: Pull complete
9f48d1f43000: Pull complete
c693f0615bce: Pull complete
8a621b9dbed2: Pull complete
0807d32aef13: Pull complete
6d2fc69dfa35: Pull complete
56153548dd2c: Extracting [=======================================>           ]  84.67MB/108.3MB


用docker-compose ps -a 命令查看是否启动成功,看到如下信息说明成功:

?  docker docker-compose ps -a
        Name                      Command                State                   Ports              
----------------------------------------------------------------------------------------------------
mysql                  docker-entrypoint.sh mysqld      Up         
0.0.0.0:3306->3306/tcp, 33060/tcp

Mysql安装成功!!


04

docker-compse部署Nacos


去github把nacos 的SQL文件nacos-mysql.sql下载下来,导入数据库中。

https://github.com/alibaba/nacos

用工具导到我们刚搭建好的mysql中:(用本机ip, root/123456, 端口3306)

在docker-compse.yml的后面中加入以下配置:

nacos:
    image: nacos/nacos-server:1.1.4
    container_name: nacos
    environment:
      - PREFER_HOST_MODE=hostname
      - MODE=standalone
      - MYSQL_DATABASE_NUM=1
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_MASTER_SERVICE_HOST=mysql
      - MYSQL_MASTER_SERVICE_DB_NAME=nacos
      - MYSQL_MASTER_SERVICE_PORT=3306
      - MYSQL_MASTER_SERVICE_USER=root
      - MYSQL_MASTER_SERVICE_PASSWORD=123456
    volumes:
      - /Users/xxx/docker/nacos/logs:/home/nacos/logs
    ports:
      - "8848:8848"
    depends_on:
      - mysql
    restart: always

写好了注意在相应的volumes创建好相应的文件夹

docker-compose up -d nacos

启动nacos

启动完成后通过 http://yourip:8848/nacos/#/login 用nacos/nacos登陆


Nacos安装成功!!


05

docker-compse部署sentinel


在docker-compse.yml的后面中加入以下配置:

 sentinel:
    image: bladex/sentinel-dashboard:latest
    container_name: sentinel
    ports:
      - "8858:8858"
    restart: always

运行命令:

?  docker docker-compose up -d sentinel


启动成功后,http://yourip:8858/ 用户名密码sentinel/sentinel登陆


Sentinel安装成功, 至此前期所需要的组件都安装成功, 万里长征迈出第一步,下期我们继续。

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...