docker(八)compose

news2024/11/16 19:38:20

compose

一 简介:

通过前面几篇文章,我们了解了docker的基本知识,docker帮我们解决了服务打包安装的问题,但是随着服务的不断增多带来了如下问题:

  • 多次使用Dockerfile Build Image或者DockerHub拉取Image;
  • 需要创建多个Container,多次编写启动命令;
  • Container互相依赖的如何进行管理和编排;

这时候docker compose的出现,Docker Compose可以做到以下几点:

  • 提供工具用于定义和运行多个docker容器应用;
  • 使用yaml文件来配置应用服务(docker-compse.yml);
  • 可以通过一个简单的命令docker-compse up可以按照依赖关系启动所有服务;
  • 可以通过一个简单的命令docker-compose down停止所有服务;
  • 当一个服务需要的时候,可以很简单地通过–scale进行扩容;

Docker Compose有以下特征:

  • 更高的可移植性,Docker Compose仅需一个docker-compse up可以完成按照依赖关系启动所有服务,然后使用docker-compose down轻松将其拆解。帮助我们更轻松地部署复杂的应用程序;
  • 单个主机上的多个隔离环境,Compose可以使用项目名称将环境彼此隔离,这带可以在一台计算机上运行同一环境的多个副本,它可以防止不同的项目和服务相互干扰;

二 实操:

需求:使用docker-compose 搭建一个springboot+redis的项目

  • 1 创建一个springboot项目 (redis+web)
  • 这里使用的idea创建springboot项目,如下图所示:
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 2 编写简单的逻辑代码(这里使用redis 做一个简单的计数器)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * @author: lianghengyu
 * @time: 2022-12-07
 * @desc:
 */
@RestController
public class MyDockerTest {


    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @RequestMapping("/user/query")
    public String query(){
        return "hello";
    }



    @GetMapping("/query/redis")
    public String queryCounter(){
        Long counter = stringRedisTemplate.opsForValue().increment("counter");
        return "页面访问的次数"+counter;
    }
}
  • application.properties 配置文件配置如下:
server.port=8080 # 服务端口号
spring.redis.host=redis # 因为项目启动在容器中,所以直接配置容器中的redis即可
spring.redis.port=6379

  • 使用maven ==> install 打包springboot项目 上传到服务器中
    在这里插入图片描述

  • 3 配置dockerfile文件

    • copy 表示把服务器中的jar包复制到容器中
    • CMD 执行命令,启动springboot
FROM java:8
MAINTAINER LHY
LABEL name='docker-test' version='1.0' author='lhy'
COPY docker-0.0.1-SNAPSHOT.jar springboot-mybatis.jar
CMD ["java","-jar","springboot-mybatis.jar"]
  • 4 配置docker-compose.yml文件
    • version:表示版本
    • services:表示要启动的多个容器
    • build:表示启动的位置(. 表示当前目录下 我理解找当前路径下的docekerfile文件,启动项目)
    • image:表示要启动的镜像
    • depends_on:表示依赖哪个服务,可以对服务启动排序
    • pores:端口映射
version: '2.0'
services:
  myapp:
    build: .
    image: myapp
    depends_on:
      - redis
    ports:
      - "8080:8080"
  redis:
    image: "library/redis:alpine"
  • 5 在当前位置执行 docker-compose up 启动compose
    在这里插入图片描述

  • 项目启动成功
    在这里插入图片描述

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

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

相关文章

Spark 动态资源分配参数与源码原理分析

1.1.1、Dynamic Allocation 1.1.1.1 参数说明 1.2 版本 参数名及默认值含义spark.dynamicAllocation.enabled false是否开启动态资源分配,主要是基于集群负载分配executorspark.dynamicAllocation.executorIdleTimeout60sexecutor空闲时间达到规定值&#xff0c…

程序人生:化解互联网 “寒冬” 危机,我教你摆脱困境

三年反复的yi情,近20年史无前例的互联网裁员潮汹涌而至。 寒冬来袭,每一个职场打工人,都感到了寒意。 互联网企业大裁员的底层逻辑,一方面是受宏观环境影响(yq、互联网红利结束、政策变化等),…

ChatGPT震撼上市,AI也开始跟你卷了,来一起看看怎么用ChatGPT!!!

强大AI产品,ChatGPT震撼上市,程序员真的要失业了吗? 最近聊天机器人异常火爆,火爆到什么程度,卖个关子,下文解释。 OpenAI推出了ChatGPT,它能够回答各种各样的问题,包括生成代码&a…

Node.js学习下(70th)

一、Buffer 缓冲区 背景 1、浏览器没有储存图片文件等媒体文件的需求,JS 存的都是一些基本数据类型。 2、服务器需要存储图片/视频/音频等媒体文件,因此有了 Buffer 缓冲器。 1. Buffer 是什么 Buffer 是一个和数组类似的对象,不同是 Buf…

python代码学习1

\n 换行符号 \r 回车 \b 后退一个格 \t 制表符(4个字符为一组,当不字符被占有时,重新生成一个制表符。如果被占据,不满4个字符时,生成剩余部分空格。) #原字符 不希望字符串中转义字符起作用&#xff0…

FME Server 无代码环境中自动化您数据和应用集成工作流

专为现代企业打造 简化数据和应用程序集成,让您的数据为您所用。在FME Desktop中创作工作流,并使用 FME Server 将其自动化,以按计划或响应事件运行数据集成。 构建无代码 Web 应用程序,提供自助式数据提交和验证,并向…

Java学习之动态绑定机制

目录 举例说明 父类 子类 main类 运行结果 ​编辑 动态绑定 举例说明 父类 子类 main类 分析 运行结果 Java重要特性:动态绑定机制(非常重要) 举例说明 父类 class A {//父类public int i 10;public int sum() {return getI(…

2022年11月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2022年11月国产数据库大事件和重要产品发布消息。 文章目录11月国产数据库大事记(时间线)产品/版本发布兼容认证排行榜新增数据库11月国产数据库大事记(时间线) 11月1日,国际知名研究机构 IDC …

什么是内存对齐

内存对齐 什么是内存对齐为什么要内存对齐内存对齐的规则结构体中内存对齐 sizeof无嵌套有嵌套 iOS中对象内存对齐 iOS中获取内存大小方式 class_getInstanceSize()malloc_size() iOS中内存对齐 实际占用内存对齐方式系统分配内存对齐方式问题 内存优化 总结 内存对齐 什么…

基于C++的AGV机器人无线控制

1 AGV系统概述 1.1AGV原理 AGV行走控制系统由控制面板、导向传感器、方向电位器、状态指示灯、避障传感器、光电控制信号传感器、驱动单元、导引磁条、电源组成。 AGV的导引(Guidance)是指根据AGV导向传感器(Navigation)所得到…

基于FFmpeg进行rtsp推流及拉流(详细教程)

目录 1.1 Windows系统 1.2 Ubuntu 和 Debian 系统 1.3 CentOS 和 Fedora 系统 1.4 macOS系统 2. 安装rtsp-simple-server 3. FFmpeg推流 3.1 UDP推流 3.2 TCP推流 3.3 循环推流 4 拉流 4.1 ffplay/VLC拉流显示 4.2 FFmpeg拉流保存成视频 1. 安装FFmpeg FFmpeg 是一…

tftp服务/nfs服务/二进制工具集/uboot基础

一、什么是系统移植 1)系统移植就是给开发板搭建一个linux操作系统 2)从官方获取源码,进行配置和编译,生成板子需要的镜像文件 二、为什么系统移植 1)为后面学习驱动开发课程打基础 2)驱动开发工程师必…

入行4年,跳槽2次,在软件测试这一行我已经悟了!

近年来,软件测试行业如火如荼。互联网及许多传统公司对于软件测试人员的需求缺口逐年增大。然而,20年的疫情导致大规模裁员,让人觉得行业寒冬已经到来。软件测试人员的职业规划值得我们深思。 大家对软件测试行业比较看好,只是因…

【云服务器 ECS 实战】专有网络 VPC、弹性网卡的概述与配置

一、ECS 专有网络 VPC1. 传统经典网络与专有网络 VPC 对比2. 建立自己的专有网络 VPC二、弹性网卡1. 弹性网卡的概念与优势2. 弹性网卡的配置一、ECS 专有网络 VPC 阿里云在早期使用的是一种传统的网络模式,将所有的 ECS 云服务直接建立在传统网络层之上&#xff0…

【有营养的算法笔记】归并排序

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:有营养的算法笔记 文章目录一、思路二、模板讲解三、模板测试四、加练 —— 逆序对的数量今天讲解的内容是…

[附源码]Python计算机毕业设计SSM加油站管理信息系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【论文笔记】InverseForm: A Loss Function for Structured Boundary-Aware Segmentation

论文 标题:InverseForm: A Loss Function for Structured Boundary-Aware Segmentation 收录于:CVPR 2021 论文:[2104.02745] InverseForm: A Loss Function for Structured Boundary-Aware Segmentation (arxiv.org) 代码:Git…

大数据都应用在哪些领域?

大数据被应用较多的领域有哪些?疫情期间大数据技术对于疫情的防控发挥了巨大的作用,抗疫期间多家互联网企业纷纷加强大数据在疫情防控中的应用。小到社区大到部委相关部门都将大数据作为不可或缺的防疫工具,生活中很多方面涉及到大数据由此可…

Scala014--Scala中的函数

一,函数的定义和声明 对于其他计算机语言来说,如Java,python,函数和方法是一样的,但是对于Scala来说,函数和方法并不是同一个概念,方法是类或者是对象的成员,而函数是一个对象。但是…

澳亚集团通过聆讯:毛利率波动,预计利润将下滑,陈荣南为董事长

撰稿|汤汤 来源|贝多财经 近日,港交所披露的信息显示,澳亚集团有限公司(下称“澳亚集团”)通过港交所聆讯,并披露了聆讯后资料集(即招股书),中金公司和星展银行(DBS&am…