• DockerCompose安装和部署微服务项目(个人笔记)


    1.安装DockerCompose

    1.请确保已经安装docker-ce,可参考上一篇博客docker的安装和试用

    2.日常部署多个服务的项目时,单体部署较为繁琐,引入docker-compose可以解决这一痛点

    1.1 下载

    Linux下需要通过命令下载:

    # 安装
    curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    • 1
    • 2

    如果下载速度较慢,或者下载失败,可以使用我提供的docker-compose文件:

    链接:https://pan.baidu.com/s/19x1zLRdCn4apJpiReNJY_g?pwd=f7rc
    提取码:f7rc

    docker-compose上传到/usr/local/bin/

    1.2 修改文件权限

    # 修改权限
    chmod +x /usr/local/bin/docker-compose
    
    • 1
    • 2

    如果这里出现错误,需要修改自己的hosts文件:

    echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
    
    • 1

    查看是否安装完成

    docker-compose --version
    
    • 1

    目录结构
    在这里插入图片描述
    每个微服务模块文件夹又分别有一个Dockerfile文件和一个jar包
    在这里插入图片描述
    主要的docker-compose.yml的配置文件

    version: "3.2"
    
    services:
      nacos:
        image: nacos/nacos-server:1.4.1
        environment:
          MODE: standalone
        ports:
          - "8848:8848"
      mysql:
        image: mysql:5.7.25
        environment:
          MYSQL_ROOT_PASSWORD: 123456
        volumes:
          - "$PWD/mysql/data:/var/lib/mysql"
          - "$PWD/mysql/conf:/etc/mysql/conf.d/"
      userservice:
        build: ./user-service
      orderservice:
        build: ./order-service
      gateway:
        build: ./gateway
        ports:
          - "10010:10010"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    项目里可以直接用docker-compose服务名作为连接位置
    例如boostrap.yml连接nacos

    spring:
      application:
        name: userservice # 服务名称
      profiles:
        active: dev #开发环境,这里是dev
      cloud:
        nacos:
    #      server-addr: localhost:8848 # Nacos地址
    #      server-addr: localhost:80 # nginx来反向代理到nacos集群的节点
    #      server-addr: 120.56.22.33:80 # nacos配置文件来源
          server-addr: nacos:8848 # docker-compose的服务名nacos直接来访问
    
          config:
            file-extension: yaml # 文件后缀名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    例如userservice.yml连接mysql

    server:
      port: 8081
    #spring:
    #  application:
    #    name: userservice  #服务名称
    #  cloud:
    #    nacos:
    #      server-addr: 112.74.85.162:18848  #nacos服务地址
    #      discovery:
    ##        namespace: 0bf0b8e7-6e5f-472e-abd0-9a0b554d76d3 #命名空间dev环境
    ##        cluster-name: HZ #集群的形成,这里的HZ代指杭州
    #        cluster-name: SH #集群的形成,这里的SH代指上海
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
    #    url: jdbc:mysql://120.56.22.33:3311/cloud-user?serverTimezone=GMT%2B8
        url: jdbc:mysql://mysql:3306/cloud-user?serverTimezone=GMT%2B8 #直接试用docker-compose的服务名
        username: root
        password: 123456
    mybatis:
      type-aliases-package: cn.itcast.user.pojo
      configuration:
        map-underscore-to-camel-case: true
    logging:
      level:
        cn.itcast: debug
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    修改好每个服务模块的yml

    并设置打包名称为app.jar

    	<dependencies>
        dependencies>
        <build>
    		
            <finalName>appfinalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <version>2.3.9.RELEASEversion>
                plugin>
            plugins>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    然后在父项目的pom管理打包就会每个模块分别打包

    整个cloud-demo文件夹上传到服务器某个文件夹

    去到docker-compose.yml所在的目录

    #打包执行
    docker-compose up -d
    
    
    #查看日志
    docker-compose logs -f
    
    
    #有可能nacos还没启动其他的先运行,所以报错
    #可以重启其他几个服务模块
    docker-compose restart  gateway userservice orserservice
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    搭建个人私有仓库

    Docker镜像仓库

    搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

    官网地址:https://hub.docker.com/_/registry

    简化版镜像仓库

    Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

    搭建方式比较简单,命令如下:

    docker run -d \
        --restart=always \
        --name registry	\
        -p 5000:5000 \
        -v registry-data:/var/lib/registry \
        registry
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

    访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

    带有图形化界面版本

    使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

    version: '3.0'
    services:
      registry:
        image: registry
        volumes:
          - ./registry-data:/var/lib/registry
      ui:
        image: joxit/docker-registry-ui:static
        ports:
          - 8080:80
        environment:
        	# 如果不支持中文,
          - REGISTRY_TITLE=我的私有仓库
          - REGISTRY_URL=http://registry:5000
        depends_on:
          - registry
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    配置Docker信任地址

    我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

    # 打开要修改的文件
    vi /etc/docker/daemon.json
    # 添加内容:
    原有内容前面一行要加逗号哦,
    "insecure-registries":["http://192.168.150.101:6660"]
    # 重新加载
    systemctl daemon-reload
    # 重启docker
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    构建运行

    #创建一个目录来存放该项目吧
    mkdir -p /docker/registry-ui
    cd /docker/registry-ui
    
    #创建yml文件
    touch docker-compose.yml
    
    #把yml内容复制粘贴
    
    #运行
    docker-compose up -d
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    此时输入:192.168.150.101:6660

    在这里插入图片描述

    打包上传镜像

    查看镜像
    docker images
    
    • 1
    • 2

    推送镜像到私有镜像服务必须先tag,步骤如下:
    1.重新tag本地镜像,名称前缀为私有仓库的地址:192.168.150.101:6660/

    #原tag ---->要推送的tag
    docker tag nginx:latest 192.168.150.101:6660/nginx:1.0 
    
    • 1
    • 2

    2.推送镜像

    docker push 192.168.150.101:6660/nginx:1.0
    
    • 1

    3.拉取镜像

    docker pull 192.168.150.101:6660/nginx:1.0
    
    • 1
  • 相关阅读:
    Blob对象实现文件下载和图片预览 FileReader
    毕设-基于SSM房屋租赁管理系统
    Ubuntu Kafka开机自启动服务
    宝塔防火墙必要的快速操作指令
    MySQL高级八:SQL执行流程
    多线程Thread
    神经网络训练图形分析,神经网络训练图形分类
    【译】.NET 7 中的性能改进(二)
    SQL LIKE 运算符
    Mysql使用中的性能优化——索引数对插入操作性能的影响
  • 原文地址:https://blog.csdn.net/weixin_43961117/article/details/126117295