返回顶部
首页 > 资讯 > 服务器 >DockerCompose快速部署多容器服务实战的实例详解
  • 858
分享到

DockerCompose快速部署多容器服务实战的实例详解

2024-04-02 19:04:59 858人浏览 八月长安
摘要

目录1 什么是Docker Compose2 安装Docker Compose3 Docker Compose文件格式的简单介绍4 Docker Compose常用命令5 使用Doc

1 什么是Docker Compose

前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。

使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具

2 安装Docker Compose

安装命令:

[root@iZ2ze4m2ri7irkf6h6n8zoZ ~]# curl -L https://GitHub.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
[root@iZ2ze4m2ri7irkf6h6n8zoZ ~]# chmod +x /usr/local/bin/docker-compose

检查是否安装成功:

[root@iZ2ze4m2ri7irkf6h6n8zoZ ~]# docker-compose -v

3 Docker Compose文件格式的简单介绍

Docker Compose文件一般命名为docker-compose.yml,并且执行Docker-compose命令时在该文件所在目录下执行。

Docker Compose 分为三层,分别是工程(project)、服务(service)/引用标签、容器(container)

例如:

docker-compose.yml   # 一个文件代表一个project
 serveices:          # 服务
   container-name:   # 容器
     build: 
      - xxx:xxx
 network:            # 引用标签
   xxx:

下面是一个标准的docker-compose.yml文件

version: "3"  # 指定版本
services:     # services
  proxy:      # 自定义容器名称
    build: ./proxy  # Dockerfile所在目录,用于构建容器
    networks: # 自定义容器网络
      - frontend
  app:       
    build: ./app
    networks:
      - frontend
      - backend
  db:
    image: postgres
    networks:
      - backend
networks:
  frontend:
    driver: custom-driver-1
  backend:
    driver: custom-driver-2
    driver_opts:
      foo: "1"
      bar: "2"

4 Docker Compose常用命令

ps:列出所有运行容器

docker-compose ps

logs:查看服务日志输出

docker-compose logs

port:打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口

docker-compose port eureka 8761

build:构建或者重新构建服务

docker-compose build

start:启动指定服务已存在的容器

docker-compose start eureka

stop:停止已运行的服务的容器

docker-compose stop eureka

rm:删除指定服务的容器

docker-compose rm eureka

up:构建、启动容器

docker-compose up

kill:通过发送 SIGKILL 信号来停止指定服务的容器

docker-compose kill eureka

pull:下载服务镜像

docker-compose pull eureka

scale:设置指定服务运气容器的个数,以 service=num 形式指定

docker-compose scale user=3 movie=3

run:在一个服务上执行一个命令

docker-compose run WEB bash

5 使用Docker Compose一键部署Spring Boot+Redis实战

5.1 构建应用

5.1.1 Spring Boot项目

依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

配置文件:

spring:
  redis:
    #host: 127.0.0.1
    host: ymx.redis
    port: 6379
    passWord:
    jedis:
      pool:
        max-active: 8
        max-wait: -1
        max-idle: 500
        min-idle: 0
    lettuce:
      shutdown-timeout: 0

controller代码:

@RestController
public class HelloController {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    @RequestMapping("/hello/{id}")
    public String hello(@PathVariable("id") Integer id) {
        return redisTemplate.opsForValue().get(String.valueOf(id));
    }
    @RequestMapping("/save/{id}/{name}")
    public String save(@PathVariable("id") Integer id, @PathVariable("name") String name) {
        try {
            redisTemplate.opsForValue().set(String.valueOf(id), "Hello " + name + "!");
        } catch (Exception e) {
            return "false";
        }
        return "success";
}

5.1.2 Redis配置文件

只是将redis自带的redis.conf做了一点修改

#注释掉bind 127.0.0.1
# bind 127.0.0.1 -::1
#修改protected-mode yes->no
protected-mode no

5.2 打包应用并构建目录

5.2.1 打包Spring Boot项目

在这里插入图片描述

5.2.2 上传redis.conf配置文件

5.2.3 目录结构

- mycompose
  - docker-compose.yml 
  - rd  
    - Dockerfile  
    - redis.conf
  - sp
    - Dockerfile  
    - sp_redis-0.0.1-SNAPSHOT.jar

5.3 编写Dockerfile

5.3.1 Spring Boot容器的Dockerfile

FROM java:8

MAINTAINER YMX "1712229564@qq.com"
COPY sp_redis-0.0.1-SNAPSHOT.jar /root/sp_redis-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar","/root/sp_redis-0.0.1-SNAPSHOT.jar"]

5.3.2 redis容器的Dockerfile

FROM redis
  
MAINTAINER ymx 1712229564@qq.com
COPY redis.conf /usr/local/etc/redis/redis.conf
EXPOSE 6379
CMD ["redis-server","/usr/local/etc/redis/redis.conf" ]

5.4 编写docker-compose.yml

version: "2.8" # 表示该 Docker-Compose 文件使用的是 Version 2 file
services:
  sp-demo:       # 指定服务名称
    build: ./sp  # 指定 Dockerfile 所在路径
    ports:       # 指定端口映射
      - "9001:8080"
    links:
      - re-demo:ymx.redis # 进行容器链接
  re-demo:
    build: ./rd

5.5 运行并测试部署结果

运行:

[root@iZ2ze4m2ri7i mycompose]# docker-compose up
Creating network "mycompose_default" with the default driver
Building re-demo
Sending build context to Docker daemon  96.77kB
Step 1/5 : FROM redis
latest: Pulling from library/redis
......

测试:

[root@iZ2ze4m2ri7i mycompose]# curl Http://localhost:9001/save/2/Ymx
success
[root@iZ2ze4m2ri7i mycompose]# curl http://localhost:9001/hello/2
Hello Ymx!

6 小总结

在Spring Boot配置文件中,redis的host没有使用localhost或者127.0.0.1,而是使用了域名ymx.redis,这一域名在docker-compose.yml文件中进行了映射,进而Spring Boot的容器能够链接到redis容器,但是这一情况依赖于一个默认条件,就是docker的网络默认是桥接模式,两个容器都在同一子网中,因此才能够互相访问。

因此,links并不是唯一的容器网络解决方案,在容器较多时,需要使用networks进行网络的管理。

参考文章:

https://www.jianshu.com/p/658911a8cff3

https://www.jianshu.com/p/3004fbce4d37

https://blog.csdn.net/luo15242208310/article/details/88642187

https://blog.csdn.net/qq_36781505/article/details/86612988

到此这篇关于Docker Compose快速部署多容器服务实战的文章就介绍到这了,更多相关Docker Compose多容器实战内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: DockerCompose快速部署多容器服务实战的实例详解

本文链接: https://lsjlt.com/news/139555.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • DockerCompose快速部署多容器服务实战的实例详解
    目录1 什么是Docker Compose2 安装Docker Compose3 Docker Compose文件格式的简单介绍4 Docker Compose常用命令5 使用Doc...
    99+
    2024-04-02
  • 实时Git部署:如何在ASP容器中实现快速部署?
    在软件开发的过程中,快速的部署和测试是非常重要的。Git是一个流行的版本控制工具,而实时Git部署可以使开发者更快速、更安全地部署应用程序。本文将介绍如何在ASP容器中实现实时Git部署,并演示一些示例代码。 首先,我们需要一个ASP容器...
    99+
    2023-08-28
    容器 实时 git
  • 如何使用Docker Compose快速部署多容器服务
    小编给大家分享一下如何使用Docker Compose快速部署多容器服务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1 什么是Docker Compose前面我们使用 Docker 的时候,定义 Dockerf...
    99+
    2023-06-29
  • Redis快速部署为Docker容器的实现方法
    目录入门数据存储配置您的服务器管理Redis安全使用您的 Redis 安装概括Redis是一种内存键值存储,可以保存高性能的抽象数据结构。开源软件通常用于数据库、消息传递和缓存功能。...
    99+
    2024-04-02
  • 容器服务使用TKE快速部署ChatGLM
    1. 登录云容器服务TKE控制台。2. 在TKE控制台左侧导航栏中选择“集群”,然后点击“新建集群”按钮。3. 在“创建集群”页面中...
    99+
    2023-09-21
    ChatGLM
  • golang函数的容器部署实战
    答案:是,本文提供了一个分步指南,说明如何将 go 函数部署到 kubernetes 容器,包括:创建 go 函数构建 docker 镜像部署到 kubernetes实战案例 Go 函...
    99+
    2024-04-28
    golang 容器部署 docker
  • Redis快速部署为Docker容器的实现方法是什么
    Redis快速部署为Docker容器的实现方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Redis是一种内存键值存储,可以保存高性能的抽象数据结构。开源软件通常用...
    99+
    2023-06-22
  • 容器部署:如何实现快速响应的应用程序?
    随着云计算技术的普及,容器化部署已经成为了许多企业和开发者的首选。相比传统的虚拟化技术,容器化部署更加轻量级,更加快速响应,具有更高的灵活性和可移植性。本文将介绍容器部署的基本概念和原理,并演示如何使用 Docker 容器实现快速响应的应...
    99+
    2023-09-07
    npm 容器 响应
  • PHP和Linux容器:如何实现快速部署和扩展?
    随着互联网的发展,Web应用程序的部署和扩展变得越来越重要。在这个过程中,PHP和Linux容器成为了两个非常重要的工具。PHP是一种流行的服务器端脚本语言,而Linux容器则是一种轻量级的虚拟化技术,它可以帮助我们在不同的环境中快速部署...
    99+
    2023-07-25
    linux linux 容器
  • dockermavenplugin快速部署微服务的详细流程
    目录一、前置条件二、部署方法1.开放远程部署端口3.修改application文件4.打包上传并创建镜像5.启动容器三、总结一、前置条件 linux下装好docker并启动 1.使用...
    99+
    2024-04-02
  • Java的MyBatis快速入门和实战详解
    目录1.什么是MyBatis2. JDBC存在的缺点硬编码操作繁琐3.Mybatis简化JDBC开发4.MyBatis快速入门|实战项目详解1.什么是MyBatis 简单来说,My...
    99+
    2023-05-18
    MyBatis MyBatis 实战
  • 超实用!服务器如何快速实现一键环境部署!
    很多新手在建站时都会在环境部署这一环境中耗费大量时间,如何选择自己需要的环境配件,一一下载、安装、配置……虽说没有什么特别困难的地方,但却十分麻烦。有没有其他更简单的操作方法呢?下面我就为大家介绍我是如何快速实现一键环境部署的!首先你需要下...
    99+
    2023-06-04
  • 如何在Spring应用中使用GO容器实现快速部署?
    Spring是一个广泛使用的Java框架,它提供了很多便捷的功能,使得开发者可以更加快速地开发和部署应用程序。然而,在实际的开发中,我们可能会遇到一些问题,比如应用程序的部署速度太慢,导致开发进度受到了很大的影响。为了解决这个问题,我们可以...
    99+
    2023-11-03
    容器 spring shell
  • 动态上传jar包热部署的实战详解
    目录定义简单的接口该接口的一个简单的实现反射方式热部署注解方式热部署测试近期开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传...
    99+
    2024-04-02
  • PHP IDE和JavaScript:如何在容器中实现快速部署和开发?
    随着互联网技术的发展,越来越多的应用程序开始采用容器技术进行部署和开发。容器是一种轻量级的虚拟化技术,它可以将应用程序和其依赖的环境打包到一个容器中,并在任何地方快速部署。本文将介绍如何使用PHP IDE和JavaScript在容器中实现...
    99+
    2023-07-20
    ide 容器 javascript
  • Docker快速部署国产达梦数据库的实现示例
    目录前言⛳️ 1.达梦简介⛳️ 2.镜像下载⛳️ 3.创建容器⛳️ 4.数据库使用✨ 4.1 数据库登陆✨ 4.2 DEM介绍✨ 4.3 远程连接达梦前言 本文总结了Docker部署...
    99+
    2024-04-02
  • shell脚本多实例部署nginx的详细教程
    1. 创建一个目录,用来存放脚本和安装包 [root@localhost nginx]# tree . ├── install.sh └── packages └── nginx-1.20.1.tar.gz ...
    99+
    2022-06-04
    shell脚本部署nginx shell部署nginx
  • IIS服务器中部署PHP案例详解
    部署网站前查看一下系统是否已经安装CGI 1、启动iis服务器,打开IIS服务器 打开IIS服务器,点击网站,右击“添加网站” 2、创建网站 点击“添加网站”后,进入页面填写网站相...
    99+
    2024-04-02
  • (十)服务器K8S集群部署SpringBoot项目实战
    1.准备springboot项目 可以在 https://start.spring.io/网站准备一个项目,这里作为k8s的学习所以springboot项目中准备一个简单的访问接口即可。 2.服务器环境准备 安装Jdk 更新系统软件包: ...
    99+
    2023-08-30
    spring boot 服务器 kubernetes
  • Docker部署服务的坑实例分析
    这篇文章主要讲解了“Docker部署服务的坑实例分析 ”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Docker部署服务的坑实例分析 ”吧!本项目采用的是s...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作