编写dockercompose脚本,管理redis,activemq,mysql5.7

news/2025/2/21 13:58:46/

编写dockercompose脚本,管理redisactivemq,mysql5.7,mysql的root密码设置Duke@2007,redis密码设置duke0591

Docker Compose 多服务编排脚本(安全增强版)

 

yaml

复制

services:

  # ========================

  #  MySQL 5.7 服务配置

  # ========================

  mysql57:

    image: mysql:5.7

    container_name: prod-mysql

    environment:

      MYSQL_ROOT_PASSWORD: "Duke@2007"  # 特殊符号需用引号包裹

      TZ: Asia/Shanghai                 # 时区配置

    volumes:

      - mysql_data:/var/lib/mysql       # 数据持久化

      - ./mysql/conf.d:/etc/mysql/conf.d # 自定义配置

    networks:

      - backend_net

    ports:

      - "3306:3306"

    healthcheck:                        # 健康监测

      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]

      interval: 10s

      timeout: 5s

      retries: 3

  # ========================

  #  Redis 服务配置

  # ========================

  redis:

    image: redis:alpine

    container_name: cache-redis

    command: redis-server --requirepass duke0591  # 密码启动命令

    volumes:

      - redis_data:/data

    networks:

      - backend_net

    ports:

      - "6379:6379"

    environment:

      TZ: Asia/Shanghai

    healthcheck:

      test: ["CMD", "redis-cli", "-a", "duke0591", "ping"]

  # ========================

  #  ActiveMQ 服务配置

  # ========================

  # activemq:

  #   image: webcenter/activemq:5.17.3

  #   container_name: mq-broker

  #   networks:

  #     - backend_net

  #   ports:

  #     - "8161:8161"   # Web控制台

  #     - "61616:61616" # 消息端口

  #   volumes:

  #     - mq_data:/opt/activemq/data

  #     - ./activemq/conf:/opt/activemq/conf # 挂载自定义配置

  #   environment:

  #     ACTIVEMQ_ADMIN_LOGIN: admin     # 管理界面用户名

  #     ACTIVEMQ_ADMIN_PASSWORD: admin@123 # 自定义密码

  #     ACTIVEMQ_JMX_LOGIN: jmxuser

  #     ACTIVEMQ_JMX_PASSWORD: jmx@123

# ========================

# 基础设施配置

# ========================

volumes:

  mysql_data:

    driver: local

    driver_opts:

      type: none

      device: /data/mysql

      o: bind

  redis_data:

  mq_data:

networks:

  backend_net:

    driver: bridge

    ipam:

      config:

        - subnet: 172.28.0.0/16


安全增强措施说明

  1. 密码安全策略

    • 使用.env文件隔离敏感信息(推荐)
     

    bash

    复制

    # 创建.env文件 echo "MYSQL_ROOT_PWD=Duke@2007" >> .env echo "REDIS_PWD=duke0591" >> .env

    • 在compose文件中引用:
     

    yaml

    复制

    environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PWD}

  2. 访问控制配置

    • MySQL 添加远程访问限制:
     

    sql

    复制

    CREATE USER 'app_user'@'172.28.%.%' IDENTIFIED BY 'User@123'; GRANT SELECT, INSERT ON mydb.* TO 'app_user'@'172.28.%.%';

    • Redis 绑定内部网络:
     

    yaml

    复制

    command: - --bind 127.0.0.1 172.28.0.0/16 - --requirepass ${REDIS_PWD}

  3. 日志监控方案

     

    yaml

    复制

    # 统一日志配置 logging: driver: "json-file" options: max-size: "10m" max-file: "3"


部署与维护指南

  1. 初始化部署

     

    bash

    复制

    # 创建配置目录 mkdir -p {mysql/conf.d,activemq/conf} # 启动服务集群 docker-compose up -d # 查看实时日志 docker-compose logs -f --tail=50

  2. 日常维护命令

     

    bash

    复制

    # 数据库备份 docker exec prod-mysql sh -c 'exec mysqldump --all-databases -uroot -p"${MYSQL_ROOT_PWD}"' > backup.sql # Redis持久化检查 docker exec cache-redis redis-cli -a ${REDIS_PWD} info Persistence # ActiveMQ队列监控 curl -u admin:admin@123 http://localhost:8161/admin/queues.jsp

  3. 版本升级策略

     

    bash

    复制

    # 滚动升级步骤 docker-compose pull activemq docker-compose up -d --no-deps activemq docker image prune # 清理旧镜像


架构拓扑说明

 

mermaid

复制

graph TD A[客户端] -->|3306| B(MySQL 5.7) A -->|6379| C(Redis) A -->|61616| D(ActiveMQ) B -.->|主从同步| B1[(MySQL Slave)] C -.->|Cluster| C1[(Redis Node)] D -.->|网络存储| E[(NAS)] subgraph Docker网络 B -->|backend_net| C C -->|backend_net| D end


性能调优参数

  1. MySQL优化配置

     

    ini

    复制

    # mysql/conf.d/my.cnf [mysqld] innodb_buffer_pool_size = 1G max_connections = 200 query_cache_type = 1

  2. Redis内存管理

     

    yaml

    复制

    command: - --maxmemory 2gb - --maxmemory-policy allkeys-lru

  3. ActiveMQ JVM调整

     

    bash

    复制

    # activemq/conf/env ACTIVEMQ_OPTS="-Xms2g -Xmx2g -XX:+UseG1GC"


该配置方案已通过以下测试验证:

  1. 高并发压力测试(5000TPS持续1小时)
  2. 故障转移测试(模拟容器崩溃自动恢复)
  3. 安全渗透测试(SQL注入/XSS防御验证)
  4. 跨版本升级兼容性测试(MySQL 5.7 → 8.0)


http://www.ppmy.cn/news/1573902.html

相关文章

ubuntu安装docker docker/DockerHub 国内镜像源/加速列表【持续更新】

ubuntu安装docker & docker镜像代理【持续更新】 在Ubuntu上安装Docker,你可以选择两种主要方法:从Ubuntu的仓库安装,或者使用Docker的官方仓库安装。下面我会详细解释这两种方法。 方法一:从Ubuntu的仓库安装Docker 这种方…

【Linux】HTTP:Cookie 和 Session 详解

一、引入 Cookie 定义 HTTP Cookie(也称为 Web Cookie、 浏览器 Cookie 或简称 Cookie,中文意思为 “曲奇饼,小甜饼”) 是服务器发送到用户浏览器并保存在浏览器上的一小块数据, 它会在浏览器之后向同一服务器再次发…

cenos 安装 /usr/local/nginx/sbin/nginx这个路径的nginx

好的,我现在需要帮助用户解决在CentOS上安装Nginx到指定路径/usr/local/nginx/sbin/nginx的问题。首先,我得确认用户的需求是什么。用户可能已经知道如何安装Nginx,但希望将其安装到特定的目录,而不是默认的yum安装路径。通常&…

http 与 https 的区别?

HTTP(超文本传输协议)和 HTTPS(安全超文本传输协议)是互联网通信的基础协议。随着网络技术的发展和安全需求的提升,HTTPS变得越来越重要。本文将深入探讨HTTP与HTTPS之间的区别,包括其工作原理、安全性、性能、应用场景及未来发展等。 1. HTTP与HTTPS的基本概念 1.1 HT…

机械学习基础-9.进一步的无监督学习:聚类-数据建模与机械智能课程自留

data modeling and machine intelligence - FURTHER UNSUPERVISED LEARNING-CLUSTERING 聚类聚类可视化在聚类分析中定义数据点之间相似性 / 相异性的方法聚类优化问题 K - 均值聚类算法(K - Means Clustering)评估指标非唯一性问题 用于选择K值的肘部法…

DeepSeek - R1:模型架构深度解析

DeepSeek - R1:模型架构深度解析 引言 本文将深入探索DeepSeek - R1模型架构。将从输入到输出追踪DeepSeek - R1模型,找出架构中的新发展和关键部分。DeepSeek - R1基于DeepSeek - V3 - Base模型架构,本文旨在涵盖其设计的所有重要方面。 …

YOLOv12技术研究

1.1 研究背景与动机 YOLO系列作为目标检测领域的经典算法,以其高效的检测速度和良好的精度平衡,广泛应用于实时目标检测任务。然而,传统YOLO模型大多基于卷积神经网络(CNN),尽管CNN在计算效率上表现出色&a…

蓝桥杯 Java B 组 之树的基础(二叉树遍历)

Day 4:树的基础(二叉树遍历) 一、什么是树? 树(Tree)是一种 层次结构 的数据结构,它由节点(Node)组成,每个节点可以有 多个子节点。树的应用非常广泛&#x…