当前位置: 首页 > news >正文

利用docker-compose一键创建并启动所有容器

简介

在开发复杂的分布式应用时,通常需要同时运行多个服务(如数据库、缓存、Web 应用等)。Docker Compose 提供了一种简便的方式来定义和运行多容器 Docker 应用程序。通过一个 docker-compose.yml 文件,您可以配置应用程序的服务、网络和卷,并且只需一条命令即可轻松管理这些服务的生命周期。

本文将介绍如何编写一个 docker-compose.yml 文件,以及如何使用它来一键创建并启动所有必要的容器。

前提条件

已安装 Docker 和 Docker Compose。
对 Docker 的基本概念有所了解,包括镜像、容器、网络和卷。

docker-compose2.X版本

Docker Compose 配置文件

docker-compose.yml 文件是 Docker Compose 的核心配置文件,用于定义和配置服务、网络和卷。下面是一个简单的例子,展示了如何为一个包含 RabbitMQ 和 Elasticsearch 服务的应用程序编写配置文件。

需要提前把挂载目录和配置文件创建或者写好配置内容
需要创建个网络

docker network create my_custom_network
services:redis:image: xxxxx/service/redis-amd64:7.0.2container_name: redisnetworks:- security-hubvolumes:- /data/common/redis/config/redis.conf:/etc/redis.conf- /data/common/redis/data:/dataports:- "6379:6379"restart: alwayscommand: ["redis-server", "/etc/redis.conf", "--requirepass", "xxxx"]rabbitmq:image: xxxxxx/service/security-hub/rabbitmq-amd64:3.11.2container_name: rabbitmqnetworks:- security-hubports:- "5672:5672"- "15672:15672"restart: alwaysvolumes:- /data/common/rabbitmq/data:/var/lib/rabbitmq- /data/common/rabbitmq/config/rabbitmq.conf:/etc/rabbitmq/conf.d/10-defaults.confcommand: >sh -c "rabbitmq-plugins enable --offline rabbitmq_management &&rabbitmq-server"xxl-job:image: docker.inspur.com:5000/rds-common/job-center:2.0.2-8container_name: job-centernetworks:- security-hubports:- "8085:8085"restart: alwaysvolumes:- /data/common/job-center/application.properties:/usr/lib/config/application.properties- /data/common/job-center/logback.xml:/usr/lib/config/logback.xmlelasticsearch:image: xxxxxx/service/lma/elasticsearch-amd64:7.17.23container_name: elasticsearchnetworks:- security-hubports:- "9200:9200"- "9300:9300"restart: alwaysenvironment:- discovery.type=single-node- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"- xpack.security.enabled=true- ELASTIC_PASSWORD=xxxxulimits:memlock:soft: -1hard: -1volumes:- /data/common/elasticsearch/config:/usr/share/elasticsearch/config- /data/common/elasticsearch/data:/usr/share/elasticsearch/datanetworks:security-hub:external: true

服务定义 (services:)
redis: 这是服务的名字,用于标识这个特定的服务配置。

配置项解释
image: 指定了要使用的 Docker 镜像。在这个例子中,镜像是从某个私有仓库拉取的 xxxxx/service/redis-amd64:7.0.2。这里的 xxxxx 应该替换为实际的仓库地址。

container_name: 设置容器启动后的名称为 redis。如果不指定,默认会生成一个基于项目和服务名的名称。

networks: 定义了容器将加入的网络。这里指定了一个自定义网络 security-hub,这有助于服务间通信和隔离。

volumes: 映射主机上的目录或文件到容器内,实现数据持久化或配置共享。
/data/common/redis/config/redis.conf:/etc/redis.conf: 将宿主机的 /data/common/redis/config/redis.conf 文件挂载到容器内的 /etc/redis.conf,允许通过修改宿主机上的配置文件来影响容器内的Redis配置。
/data/common/redis/data:/data: 将宿主机的 /data/common/redis/data 目录挂载到容器内的 /data,确保Redis的数据可以持久保存在宿主机上。

ports: 端口映射,格式为 “host_port:container_port”。此处将宿主机的 6379 端口映射到容器内的 6379 端口,使得外部可以通过访问宿主机的 6379 端口来与Redis交互。

restart: 设置重启策略。always 表示无论容器退出代码是什么,Docker都会尝试重新启动容器。

command: 覆盖默认的容器启动命令。这里是告诉容器以特定的方式启动Redis服务器:
[“redis-server”, “/etc/redis.conf”, “–requirepass”, “xxxx”]
redis-server: 启动Redis服务器的命令。
/etc/redis.conf: 指定配置文件的位置。
–requirepass xxxxx: 设置Redis的密码为 xxxxx,这样客户端连接时需要提供此密码进行身份验证。

environment: 设置环境变量,这些变量会影响容器内应用的行为。
discovery.type=single-node: 指定这是一个单节点的Elasticsearch实例,不需要与其他节点组成集群。
bootstrap.memory_lock=true: 锁住内存,防止交换(swap),这对于性能非常重要。
ES_JAVA_OPTS=-Xms512m -Xmx512m: 设置JVM堆大小,最小和最大均为512MB。调整这些值以适应您的硬件资源。
xpack.security.enabled=true: 启用X-Pack安全特性,包括加密、认证等。
ELASTIC_PASSWORD=xxxx: 设置默认用户的密码(通常是elastic用户)。请确保将xxxx替换为一个强密码。

ulimits: 设置容器的资源限制。
memlock: 设置内存锁定限制。soft: -1 和 hard: -1 表示没有限制,允许Elasticsearch进程锁住物理内存,避免被操作系统交换出去。

启动服务

保存上述配置到名为 docker-compose.yml 的文件中后,在该文件所在的目录下运行以下命令以启动所有服务:

docker-compose up -d

-d 参数表示后台运行容器。如果您想要前台运行以便实时查看日志输出,可以省略 -d。

停止并删除所有服务,可以使用:

docker-compose down

相关文章:

利用docker-compose一键创建并启动所有容器

简介 在开发复杂的分布式应用时,通常需要同时运行多个服务(如数据库、缓存、Web 应用等)。Docker Compose 提供了一种简便的方式来定义和运行多容器 Docker 应用程序。通过一个 docker-compose.yml 文件,您可以配置应用程序的服务…...

mysql开启gtid并配置主从

默认主从都开启了bin log. 1.主从都在/etc/my.cnf中加入并重启服务 gtid_mode ON enforce_gtid_consistency ON 2.在主库创建用户并授权 create user slave identified with mysql_native_password by 123456 mysql>GRANT REPLICATION SLAVE ON *.* to slave% identified…...

redis sentinel模式 与 redis 分片集群 配置

Redis 最低为5.0版本,以下为6.2.6版本信息。 模式 高可用性 数据分片 部署复杂度 适用场景 Sentinel 模式 高 无 中等 中小规模,需要高可用性 集群模式 高 支持 复杂 大规模,需要高…...

2025最新在GitHub上搭建个人图床,保姆级图文教程,实现图片高效管理

文章目录 🌍一. 图床❄️1.什么是图床❄️2.图床能解决什么问题? 🌍二. 在github上面创建图床🌍三. PicGo❄️1. PicGo介绍❄️ 2. 下载与安装❄️3. 配置图床 ❄️3.错误解决问题1问题2问题3问题4 🌍 四. Typora❄️…...

Web后端 - Maven管理工具

一 Maven简单介绍 Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 Maven的作用 二 Maven 安装配置 依赖配置 依赖传递 依赖范围 生命周期 注意事项:在同一套生命周期中,当运行后面的阶段时,前面的阶段都…...

【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)

近年来,人工智能领域的飞速发展极大地改变了各个行业的面貌。当前最新的技术动态,如大型语言模型和深度学习技术的发展,展示了深度学习和机器学习技术的强大潜力,成为推动创新和提升竞争力的关键。特别是PyTorch,凭借其…...

《探秘Windows 11驱动开发:从入门到实战》

《探秘Windows 11驱动开发:从入门到实战》 驱动开发初印象 在 Windows 11 这个充满活力与创新的操作系统世界里,驱动程序犹如幕后英雄,默默发挥着无可替代的关键作用。它是连接操作系统与硬件设备的桥梁,操作系统下达的指令,如播放音乐、读取硬盘数据等,都需要通过驱动…...

搭建Deepseek推理服务

概述: 本文介绍用Open webui ollama搭建一套Deepseek推理服务,可以在web页面上直接进行对话。作为体验搭建的是Deepseek 7b参数版本 首先选择一个云厂商创建一台ubuntu系统的虚拟机,带公网IP,通过shell登录虚拟机完成以下操作&…...

Golang GC 三色标记法

三色标记法 Golang GC 会使用三种颜色会对象进行标记。分别为白色、灰色和黑色。白色表示尚未被标记的对象、灰色表示已经追踪但还没标记的对象,黑色表示已经完成标记的对象。黑色表示活跃对象,不会被回收。 以下图所示,演示三色标记法的过…...

重新出发的LLM本地部署——DeepSeek加持下的Ollama+OpenWebUI快速部署

DeepSeek 这真的是太惊艳了,发布出来的模型这么能打,在线的版本使用起来也是丝滑连招,感觉效果比起之前一直用智谱 chatglm4 更好用,想着本地化部署一下。 本来以为,会和之前在开发测试 transformers 的模型和代码一样…...

【第3章:卷积神经网络(CNN)——3.5 CIFAR-10图像分类】

嘿,小伙伴们,今天咱们来聊聊一个超级酷炫的话题——卷积神经网络(CNN)及其在CIFAR-10图像分类中的应用。这不仅仅是一个技术话题,更是一场探索人工智能奥秘的旅程。准备好了吗?咱们这就发车! 一、CNN:人工智能的“千里眼” 首先,咱们得知道CNN是啥。CNN,全名Convol…...

Django后台新建管理员

在 Django 中,新建管理员用户通常涉及使用 Django 自带的命令行工具 manage.py。以下是具体步骤: 前提条件 Django 项目已创建:确保你已经创建了一个 Django 项目和应用。数据库已迁移:确保你已经运行了 python manage.py migra…...

【第12章:深度学习与伦理、隐私—12.2 数据隐私保护与差分隐私技术的实现与应用】

凌晨三点的数据中心,安全工程师老张盯着监控屏幕——某个医疗AI模型的训练日志显示,系统在保护隐私的同时竟然准确预测了罕见病的发病规律。这种看似魔法的技术背后,是一场持续了十五年的隐私保卫战。让我们掀开差分隐私的神秘面纱,看看这场革命如何重塑数据世界的游戏规则…...

索引----数据库

本博客全是来自于黑马程序员的mysql专题,我写的笔记 索引 是帮助Mysql高效获取数据的数据结构(有序) 数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十七节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析(InputOutputControl_0x2F服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x2F服务、输入输出控制、ISO 14229-1:2023、ECU测试 一、服务功能概…...

nodejs:express + js-mdict 网页查询英汉词典,能显示图片

向 DeepSeek R1 提问: 我想写一个Web 前端网页,后台用 nodejs js-mdict , 实现在线查询英语单词,并能显示图片 1. 项目结构 首先,创建一个项目目录,结构如下: mydict-app/ ├── public/ │ ├── …...

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

2025.2.16

Web [GDOUCTF 2023]泄露的伪装: 点进去看就是装神弄鬼,那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下:使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…...

图像生成GAN和风格迁移

文章目录 摘要abstract1.生成对抗网络 GAN1.1 算法步骤 2.风格迁移2.1 损失函数2.2 论文阅读2.2.1 简介2.2.2 方法2.2.3 实验2.2.4 结论 3.总结 摘要 本周学习了生成对抗网络(GAN)与风格迁移技术在图像生成中的应用。首先介绍了GAN模型中生成器与判别器…...

【06】泛型

文章目录 泛型函数中的泛型结构体中的泛型结构体中的方法 枚举中的泛型 泛型 RUST通过在编译时对泛型代码的单态化(monomorphization)来保证运行效率。即,在编译时对泛型填充具体数据类型转换为特定代码进行编译。 由于RUST编译试图穷举所有…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...