SpringCloud微服务-DockerCompose(初识、安装、部署)

news2024/11/26 18:41:47

DockerCompose(初识、安装、部署)

文章目录

  • DockerCompose(初识、安装、部署)
    • 初识DockerCompose?
    • DockerCompose安装
    • DockerCompose部署微服务
    • 问题解决(重要!!!)

初识DockerCompose?

  • Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

  • 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"

将Docker run中的各种参数全部转化为compose中的指令。

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

DockerCompose安装

参照文档:DockerCompose安装

DockerCompose部署微服务

实现思路如下:

  1. 查看cloud-demo文件夹,里面已经编写好了docker-compose文件,结构如下

image-20240304203556334

  1. 修改自己的cloud-demo项目,将数据库、nacos地址都命名为docker-compose中的服务名

  2. 使用maven打包工具,将项目中的每个微服务都打包为app.jar

  3. 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中

  4. 将cloud-demo上传至虚拟机,利用 docker-compose up -d 来部署

    解释:启动所有在docker-compose.yml文件中定义的服务,并且-d后台启动

其中:

docker-compose.yml的内容:

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: toor
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
    depends_on:  
      - nacos
  orderservice:
    build: ./order-service
    depends_on:  # 表示orderservice在nacos启动之后启动
      - nacos
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

Dockerfile内容:

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

常见的docker-compose命令我已经写成了一个文档,也可以使用--help命令来查看命令的具体使用用法。

问题解决(重要!!!)

  1. 首先使用命令后台启动:

    docker-compose up -d
    

    image-20240304210537693

  2. 发现服务并没有成功启动,使用命令查看日志:

    docker-compose logs -f
    

    会发现一堆报错:

    image-20240304210750027

    其报错的原因是我们的服务尝试启动,发现nacos启动在各种Service服务之后,所以服务无法启动,更别说访问了,可以使用depends-on可以设置容器的启动顺序,如下文件配置:# 表示orderservice在nacos启动之后启动

    version: "3.2"
    
    services:
      nacos:
        image: nacos/nacos-server
        environment:
          MODE: standalone
        ports:
          - "8848:8848"
      mysql:
        image: mysql:latest
        environment:
          MYSQL_ROOT_PASSWORD: toor
        volumes:
          - "$PWD/mysql/data:/var/lib/mysql"
          - "$PWD/mysql/conf:/etc/mysql/conf.d/"
      userservice:
        build: ./user-service
        depends_on:  
          - nacos
      orderservice:
        build: ./order-service
        depends_on:  # 表示orderservice在nacos启动之后启动
          - nacos
      gateway:
        build: ./gateway
        ports:
          - "10010:10010"
    
  3. 现在重启一下服务就可以了:

    #docker-compose restart <你的服务名(可以多个空格隔开)>
    docker-compose restart gateway userservice orderservice
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1492937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 归并排序OJ

目录 1、912. 排序数组 2、LCR 170. 交易逆序对的总数 3、315. 计算右侧小于当前元素的个数 4、493. 翻转对 1、912. 排序数组 思路&#xff1a;本次使用归并排序 &#xff0c;快速排序相当于二叉树的前序遍历&#xff0c;而归并排序相当于后序遍历。 归并排序是一种有效的…

【Java设计模式】三、简单工厂、工厂方法模式、抽象工厂模式

文章目录 0、案例&#xff1a;咖啡屋1、简单工厂模式 静态工厂&#xff08;不属于23种之列&#xff09;2、工厂方法模式3、抽象工厂模式4、简单工厂模式 配置文件解除耦合5、JDK源码中对工厂模式的应用 0、案例&#xff1a;咖啡屋 模拟咖啡店点餐。咖啡有多种&#xff0c;抽…

vue3+element plus 实现百度地图显示路径

添加依赖 <!-- index.html --><script type"text/javascript" src"//api.map.baidu.com/getscript?v3.0&akyI6kBeC9G4LntEWXklE2iNHwRUrmFEQc"></script><script type"text/javascript" src"//api.map.baidu.co…

【vue/组件封装】封装一个带条件筛选的搜索框组件(多组条件思路、可多选)详细流程

引入&#xff1a;实现一个带有筛选功能的搜索框&#xff0c;封装成组件&#xff1b; 搜索框长这样子&#xff1a; 点击右侧筛选图标后弹出层&#xff0c;长这样子&#xff1a; 实际应用中有多组筛选条件&#xff0c;这里为了举栗子就展示一组&#xff1b; 预览&#xff1a;…

【小白学机器学习7】相关系数R,决定系数R2和SST=SSR+SSE, 离差,偏差,方差,标准差,变异系数,标准误。

目录 1 各种数据指标&#xff0c;分类整理 1.0 关于数据/值有3种 1.1 第1类&#xff1a;描述一堆数据特征的指标&#xff1a;集中度&#xff0c;离散度&#xff0c;形状特征 1.2 第2类&#xff1a;判断预测y值和观测值差距的指标 1.3 第3类&#xff1a;描述误差的各种指标…

给定长度为n的数组a,每一次操作可以使相邻两个元素都+1或者-1,可以进行任意次操作,求最终能否使数组非递减

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5, …

矩阵爆破逆向-条件断点的妙用

不知道你是否使用过IDA的条件断点呢&#xff1f;在IDA进阶使用中&#xff0c;它的很多功能都有大作用&#xff0c;比如&#xff1a;ida-trace来跟踪调用流程。同时IDA的断点功能也十分强大&#xff0c;配合IDA-python的输出语句能够大杀特杀&#xff01; 那么本文就介绍一下这个…

K线实战分析系列之十八:十字线——判断行情顶部的有效信号

K线实战分析系列之十八&#xff1a;十字线——判断行情顶部的有效信号 一、十字线二、十字线总结三、三种特殊十字线四、长腿十字线五、墓碑十字线六、蜻蜓十字线七、特殊十字线总结 一、十字线 重要的反转信号 幅度较大的下跌&#xff0c;出现一根十字线&#xff0c;正好是在…

配置化脚手架cli工具开发实践

背景 我们服务于政务行业&#xff0c;正在打造一个集代码开发、数据集成、应用管理、一体化运维监控的应用支撑平台。 以此为导向&#xff0c;作为开发的第一步&#xff0c;代码工程创建应当为后续的集成、管理及监控等服务。所以区别于一般的cli工具&#xff0c;我们要做的工…

x6.js 流程图绘制笔记,常用函数

官方参考网站如下&#xff1a;https://antv-x6.gitee.io/zh/docs/tutorial/about 安装x6 输入以下命令 npm install antv/x6 --save 引用插件代码如下&#xff1a; import { Graph } from antv/x6; 创建绘制区域 this.guiX6 new Graph({container: document.querySelect…

相机恢复,这几个方法很重要!

“我的相机用了才不到一年&#xff0c;现在不知道是什么原因&#xff0c;有一些拍摄的图片找不到了&#xff0c;有什么方法可以恢复丢失的照片吗&#xff1f;” 对于热爱记录生活的用户来说&#xff0c;相机出现问题或相机数据丢失&#xff0c;都是一件很让人难过的事情。 在使…

文件上传{session文件包含以及条件竞争、图片文件渲染绕过(gif、png、jpg)}

session文件包含以及条件竞争 条件&#xff1a; 知道session文件存储在哪里 一般的默认位置&#xff1a; /var/lib/php/sess_PHPSESSID /var/lib/php/sessions/sess_PHPSESSID /tmp/sess_PHPSESSID /tmp/sessions/sess_PHPSESSID ####在没做过设置的情况下一般都是存储在/var…

基于Harris角点的室内三维全景图拼接算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1Harris角点检测原理 4.2 Harris响应函数 4.3 角点检测与筛选 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 dirs datasheet/;% 定义…

(十三)上市企业实施IPD成功案例分享之——杜邦

在化工行业&#xff0c;说起杜邦公司&#xff0c;可谓是“顶流”企业。作为一家有着200多年历史&#xff0c;历经了三个世纪的化工巨头&#xff0c;杜邦企业的发展史&#xff0c;就是化学工业&#xff0c;乃至整个科技水平的进步史。从1802年杜邦创立时主营的火药&#xff0c;到…

Redis 缓存机制如何提高应用程序的性能?

在数字时代&#xff0c;一拍脑门儿我们就能感觉到信息的海量和处理速度的迫切。不管是刷个微博、下个单&#xff0c;还是玩个游戏&#xff0c;我们都希望能快上加快&#xff0c;一点不拖泥带水。这时候&#xff0c;缓存技术就扮演了个大英雄的角色&#xff0c;它能让数据存取的…

Windows安装Go语言及VScode配置

最近搞自己的网站时突然想起来很多上学时的事&#xff0c;那会美国总统还是奥巴马&#xff0c;网页课教的是DreamWeaver跟Photoshop&#xff0c;其他语言像PHP、Java8、Python都有学一点&#xff0c;讲究一个所见即所得。虽然是信管专业那时和斌桑班长对新语言很感兴趣&#xf…

LC打怪录 希尔排序Shell sort 912.排序数组

Theory 希尔排序本质上是对插入排序的一种优化&#xff0c;它利用了插入排序的简单&#xff0c;又克服了插入排序每次只交换相邻两个元素的缺点。它的基本思想是&#xff1a; 将待排序数组按照一定的间隔分为多个子数组&#xff0c;每组分别进行插入排序。这里按照间隔分组指…

第二证券|中证1000认沽期权是什么?怎么买?

中证1000指数期权是以中证1000指数为标的资产的衍生品&#xff0c;其间中证1000认沽期权是指期权买方有权在约好的时刻以约好的价格将必定数量的标的资产卖给期权卖方的中证1000指数期权合约。 个人投资者想要生意认沽期权&#xff0c;需求去证券公司开通期权账户&#xff0c;…

阿里云2核4G服务器支持多少人同时在线?

2核4G服务器支持多少人在线&#xff1f;阿里云服务器网账号下的2核4G服务器支持20人同时在线访问&#xff0c;然而应用不同、类型不同、程序效率不同实际并发数也不同&#xff0c;2核4G服务器的在线访问人数取决于多个变量因素&#xff1a; 2核4G&#xff1a;2核CPU和4G内存对…

1.2_1 分层结构、协议、接口和服务

1.2_1 分层结构、协议、接口和服务 &#xff08;一&#xff09;为什么要分层&#xff1f; 主机A如果想要向主机B发送文件&#xff0c;则一定要经过中间的一些介质、链路。 发送文件前要完成的工作&#xff1a; 1.发起通信的计算机必须将数据通信的通路进行激活。 所谓的激活&a…