docker(八)compose
创始人
2024-03-25 15:35:14
0

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 {@Autowiredprivate 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: myappdepends_on:- redisports:- "8080:8080"redis:image: "library/redis:alpine"
  • 5 在当前位置执行 docker-compose up 启动compose
    在这里插入图片描述

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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...