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

DockerCompose(初识、安装、部署)

文章目录

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

初识DockerCompose?

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

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

version: "3.8"
services:mysql:image: mysql:5.7.25environment: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-serverenvironment:MODE: standaloneports:- "8848:8848"mysql:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: toorvolumes:- "$PWD/mysql/data:/var/lib/mysql"- "$PWD/mysql/conf:/etc/mysql/conf.d/"userservice:build: ./user-servicedepends_on:  - nacosorderservice:build: ./order-servicedepends_on:  # 表示orderservice在nacos启动之后启动- nacosgateway:build: ./gatewayports:- "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-serverenvironment:MODE: standaloneports:- "8848:8848"mysql:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: toorvolumes:- "$PWD/mysql/data:/var/lib/mysql"- "$PWD/mysql/conf:/etc/mysql/conf.d/"userservice:build: ./user-servicedepends_on:  - nacosorderservice:build: ./order-servicedepends_on:  # 表示orderservice在nacos启动之后启动- nacosgateway:build: ./gatewayports:- "10010:10010"
    
  3. 现在重启一下服务就可以了:

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

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

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

相关文章

final修饰符、多态、抽象类以及抽象类与接口的区别

final修饰符作用&#xff1a; 修饰变量&#xff1a;被final修饰的变量不能被重新赋值&#xff0c;即变为常量。对于基本数据类型的变量&#xff0c;其数值一旦在初始化后就不能更改&#xff1b;对于引用类型的变量&#xff0c;其引用不能更改&#xff0c;但是指向的对象内容可以…

小白跟做江科大51单片机之DS1302按键可调时钟

1.引入上一个程序的代码 2.引入Key和Timer0文件 3.获取按键值 定义全局变量unsigned char keynum main函数中 keynumKey(); 4.设置第一个按键的两种模式&#xff0c;以此来控制时钟的设定和显示 if(keynum1) { if(MODE0) { …

c++ primer学习笔记(二)

目录 第三章 一、命名空间的using声明 二、标准库的string类型 1、string对象的定义和初始化 2、string对象的读写 3、string对象的操作 4、string对象中字符的处理 三、标准库的vector类型 1、vector对象的定义和初始化 2、vector对象的操作 四、迭代器简介 1、简…

前端复选框问题-节点赋值未选中最后显示时确变成选中状态?

问题&#xff1a; 前两天一同事请教我&#xff1a;前端复选框问题-节点赋值未选中最后显示时确变成选中状态&#xff1f; 还有就是明明传过为的是false&#xff0c;在控制台上打印确变成选中状态&#xff0c;如下图&#xff1a; 以下是前端vue代码&#xff1a; <Scroll h…

CentoS迁移好帮手——银河麒麟服务器迁移运维管理平台最新介绍

•银河麒麟服务器迁移运维管理平台&#xff0c;面向大规模、集群式的服务器主机管理场景&#xff1b; •跨多种环境、高可用与分布式部署、配置管理、漏洞修复、服务包升级、CentoS迁移等多种核心运维场景解决方案&#xff1b; •CPU架构同源支持&#xff0c;兼容Intel、 海光…

Linux下下载安装JDK配置Java环境变量

Linux下下载安装JDK配置Java环境变量 1. 下载JDK 下载链接&#xff1a;(https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) 2. 上传至服务器并解压 可通过shell工具进行上传&#xff0c;我这里是上传安装在/opt目录 解压jdk-17.0.10_linux-x64_b…

C++之关联式容器set和map的使用

目录 1、set的使用​编辑 1、初始化 2、遍历 3、查找​编辑 4、插入​编辑 5、不支持修改与下标 2、map的使用 1、初始化​编辑 2、遍历 3、map的下标(重点) #include <iostream> #include <vector> #include <set> #include <map> #include…

软件开发项目管理中各角色职责介绍

项目经理&#xff1a;项目经理在项目全生命周期中扮演着核心统筹与协调者的角色&#xff0c;负责从项目的启动、规划、执行、监控直至收尾的全过程管理。具体职责包括但不限于以下几点&#xff1a; 制定项目计划&#xff1a;依据项目业务主客户需求&#xff0c;明确项目范围、时…

MySQL学习Day26——事务基础知识

一、数据库事务概述: 事务是数据库区别于文件系统的重要特性之一,事务会让数据始终保持一致性,能通过事务机制恢复到某个时间点,可以保证提交到数据库的修改不会因为系统崩溃而丢失 1.查看引擎支持事务的情况:只有InnoDB存储引擎支持事务 SHOW ENGINES; 2.基本概念: 事…

2023预测误差位平面冗余-RDHEI Based on Bit-Plane

RRBE 本文仅供学习&#xff0c;切勿转载和搬运&#xff0c;如有侵权&#xff0c;联系立删~ 一、背景知识 The Gradient-Adjusted Predictor&#xff08;GAP&#xff0c;梯度调整预测器&#xff09; 根据被预测像素周围的七个像素进行预测 具体流程可参考文献X. Wu and N. M…

selenium4的相对定位

selenium4相对定位 Selenium 4新增了相对定位器&#xff0c;能帮助用户查找元素附近的其他元素。可用的相对定位器有above、below、toLeftOf、toRightOf、near。在Selenium 4中&#xff0c;find_element方法能够接受一个新方法withTagName&#xff0c;它将返回一个RelativeLoca…

项目管理必备的五张图表,助力你高效掌控全局

在项目管理中&#xff0c;图表作为一种直观的工具&#xff0c;帮助项目经理更有效的规划、监控和控制项目的各个方面&#xff0c;以下是项目经理常用的几张图表&#xff0c;它们在项目管理中发挥着至关重要的作用。 1、甘特图 甘特图&#xff08;Gantt Chart&#xff09;是最…

C语言——oj刷题——猜数字游戏

当用C语言来实现猜数字游戏时&#xff0c;我们可以设计一个简单的游戏规则&#xff1a;计算机随机生成一个1到100之间的整数&#xff0c;玩家需要通过猜测来猜出这个数字。游戏会根据玩家猜测的数字与目标数字的大小关系给出提示&#xff0c;直到玩家猜中为止。 下面是一个用C…

类体相关知识

定义 类声明之后的一对大括号“{”&#xff0c;“}” 以及它们之间 的内容称作 &#xff0c;大括号之间的内容称作类体的内容。 组成部分 变量的声明&#xff1a;用来刻画属性 。 方法的定义&#xff1a;用来刻画行为功能

2023年12月CCF-GESP编程能力等级认证Python编程七级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(每题 2 分,共 30 分) 第1题 假设变量 x 为 float 类型,如果下面代码输入为 100,输出最接近( )。 A.0 B.-5 C.-8 D.8 答案:B 第2题 对于下面动态规划方法实现的函数,以下选项中…

python 远程代码第一次推送

conda windows 环境 conda 安装后 配置环境变量 运行 conda init; conda active base 创建虚拟环境 conda create -n my_venv python3.9.5 虚拟环境应用 file-->New project --> Existing interpreter ... -->Virtualenv environment-->interpreter ...--&g…

VR科学知识互动展示介绍|游戏体验馆加盟|VR展示厅

VR科学知识互动展示是一种利用虚拟现实技术来呈现科学知识并与观众进行互动的展示方式。通过VR设备&#xff0c;参观者可以沉浸在各种科学主题的虚拟环境中&#xff0c;以全新的视角和体验来探索科学领域的知识。 这样的展示通常结合了视觉、听觉和触觉等感官体验&#xff0c;使…

springboot-异步、定时、邮件任务

一、异步任务 1、创建项目 2、创建一个service包 3、创建一个类AsyncService 异步处理还是非常常用的&#xff0c;比如我们在网站上发送邮件&#xff0c;后台会去发送邮件&#xff0c;此时前台会造成响应不动&#xff0c;直到邮件发送完毕&#xff0c;响应才会成功&#xff…

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

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

多线程系列(十五) -常用并发工具类详解

一、摘要 在前几篇文章中&#xff0c;我们讲到了线程、线程池、BlockingQueue 等核心组件&#xff0c;其实 JDK 给开发者还提供了比synchronized更加高级的线程同步组件&#xff0c;比如 CountDownLatch、CyclicBarrier、Semaphore、Exchanger 等并发工具类。 下面我们一起来…