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

docker-comapose安装部署mysql

docker-comapose安装部署mysql

version: "3.4"
services:mysql:image: docker.das-security.cn/middleware/mysql:8.4.1container_name: mysqlenvironment:- MYSQL_ROOT_PASSWORD=密码volumes:- /etc/localtime:/etc/localtime- ./configs/mysql/initdb:/docker-entrypoint-initdb.d/- ./configs/mysql/my.cnf:/etc/my.cnf- ../volumes/mysql:/var/lib/mysqlrestart: alwaysports:- 3306:3306healthcheck:test: [ "CMD", "curl", "-f", "http://localhost:3306" ]interval: 30stimeout: 20sretries: 5

my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.2/en/server-configuration-defaults.html[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.2/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-log-bin
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=hn-userpid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8mb4
socket=/var/run/mysqld/mysqld.sock[mysql]
default-character-set=utf8mb4!includedir /etc/mysql/conf.d/

版本和服务定义

version: "3.4"
services:mysql:image: docker.das-security.cn/middleware/mysql:8.4.1container_name: mysql

这里指定了使用的 docker-compose 版本为 “3.4”,并定义了一个名为 mysql 的服务,使用指定的镜像 docker.das-security.cn/middleware/mysql:8.4.1,同时为容器命名为 mysql。

环境变量设置

environment:- MYSQL_ROOT_PASSWORD=密码

设置了 MYSQL_ROOT_PASSWORD 环境变量,用于指定 MySQL 的 root 用户密码,这里的 “密码” 应替换为实际的强密码。

数据卷挂载

volumes:- /etc/localtime:/etc/localtime-./configs/mysql/initdb:/docker-entrypoint-initdb.d/-./configs/mysql/my.cnf:/etc/my.cnf-../volumes/mysql:/var/lib/mysql

挂载本地的 /etc/localtime 到容器内的 /etc/localtime,确保容器内时间与宿主机时间一致。
将本地 ./configs/mysql/initdb 目录挂载到容器内的 /docker-entrypoint-initdb.d/,这个目录通常用于存放初始化 SQL 脚本,在容器启动时会自动执行这些脚本对数据库进行初始化操作。
把本地的 ./configs/mysql/my.cnf 配置文件挂载到容器内的 /etc/my.cnf,用于自定义 MySQL 的配置。
将本地 …/volumes/mysql 目录挂载到容器内的 /var/lib/mysql,这是 MySQL 数据存储的默认目录,这样可以保证数据的持久化,即使容器被删除,数据也不会丢失。

重启策略和端口映射

restart: always
ports:- 3306:3306

restart: always 表示容器总是会在退出时自动重启,确保服务的可用性。
将容器内的 3306 端口映射到宿主机的 3306 端口,使得可以从宿主机或其他网络访问到容器内的 MySQL 服务。

健康检查

healthcheck:test: [ "CMD", "curl", "-f", ":3306" ]interval: 30stimeout: 20sretries: 5

健康检查设置使用 curl 命令尝试连接到 MySQL 服务的 3306 端口,-f 参数表示如果返回的状态码不是 200 也认为是成功(因为可能只是连接成功,而不是一个标准的 HTTP 响应)。
interval: 30s 表示每隔 30 秒检查一次容器的健康状态。
timeout: 20s 是健康检查命令的超时时间,如果在 20 秒内没有响应则认为检查失败。
retries: 5 表示如果连续 5 次健康检查失败,则认为容器不健康。
以下是一些可能的进一步丰富内容:

资源限制(可选)

resources:limits:memory: 2G # 限制内存使用为 2GBcpu: 1.5 # 限制 CPU 使用为 1.5 个核心(根据实际需求调整)reservations:memory: 1G # 预留 1GB 内存(根据实际情况调整)cpu: 0.5 # 预留 0.5 个核心(根据实际情况调整)

可以根据实际系统资源和应用需求,对 MySQL 容器的资源使用进行限制和预留,以避免容器过度占用资源影响其他服务或系统性能。

日志配置(可选)

logging:driver: "json-file"options:max-size: "10m"max-file: "5"

这里配置了容器的日志驱动为 json-file,并设置了每个日志文件的最大大小为 10MB,最多保留 5 个日志文件。可以根据需要调整日志策略,例如使用其他日志驱动(如 syslog)或更详细的日志配置选项。

网络配置(可选,如果有特殊网络需求)

 networks:- my-network
networks:my-network:driver: bridgeipam:config:- subnet: 172.16.0.0/16gateway: 172.16.0.1

如果你的应用有多个服务并且需要更精细的网络控制,可以定义自己的网络。这里创建了一个名为 my-network 的自定义桥接网络,设置了子网和网关。将 mysql 服务连接到这个网络可以实现更好的网络隔离和管理。

通过以上丰富和扩展,可以使 docker-compose 部署的 MySQL 服务更加完善和适应不同的场景需求。在实际应用中,还需要根据具体的生产环境、性能要求和安全策略等进行进一步的调整和优化。同时,记得在运行 docker-compose 命令时,确保当前目录包含了相关的配置文件和挂载目录,并且具有足够的权限来操作这些资源。

http://www.lryc.cn/news/459485.html

相关文章:

  • C语言初阶-数据类型和变量【下】
  • C++:命名空间(namespace)详细介绍与案例
  • 专题十一_递归_回溯_剪枝_综合练习_算法专题详细总结
  • java中Runnable接口是什么?基本概念、工作原理、优点、`Runnable`与`Thread`的对比、与`Callable`接口的对比、实际场景
  • Mybatis Plus连接使用ClickHouse也如此简单
  • 什么社交平台可以找到搭子?分享多款找搭子必备的人气软件
  • STM32 RTC实时时钟 F407 寄存器
  • 矩阵等价、向量组等价、线性方程组同解与公共解的关系
  • [Linux] Linux 进程程序替换
  • 【Linux系统编程】第三十一弹---深入理解静态库:从零开始制作与高效使用的完全指南
  • FFmpeg 简介及其下载安装步骤
  • 使用CSS+SVG实现加载动画
  • 物联网(IoT)的未来发展:智能互联时代的到来
  • 斯坦福 CS229 I 机器学习 I 构建大型语言模型 (LLMs)
  • Java->排序
  • linux 大小写转换
  • Linux——传输层协议
  • centos系列,yum部署jenkins2.479.1,2024年长期支持版本
  • 正则表达式-“三剑客”(grep、sed、awk)
  • 数智时代的新航向:The Open Group 2024生态系统架构·可持续发展年度大会邀您共筑AI数字新时代
  • TensorFlow 的核心概念
  • SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(动态新增、修改等操作)
  • Matlab详细学习教程 MATLAB使用教程与知识点总结
  • 【ELKB】Kibana使用
  • ChatGPT免费使用:人工智能在现代社会中的作用
  • 腾讯音乐:从 Elasticsearch 到 Apache Doris 内容库升级,统一搜索分析引擎,成本直降 80%
  • CubeMX的FreeRTOS学习
  • C语言初始:数据类型和变量
  • Linux shellcheck工具
  • FLINK SQL时间属性