ToB企服应用市场:ToB评测及商务社交产业平台
标题:
使用Docker方式一键部署MySQL和Redis数据库详解
[打印本页]
作者:
滴水恩情
时间:
前天 00:12
标题:
使用Docker方式一键部署MySQL和Redis数据库详解
一、前言
数据库是现代应用开辟中不可或缺的一部门,MySQL和Redis作为两种广泛使用的数据库系统,分别用于关系型数据库和键值存储。本文旨在通过Docker和Docker Compose的方式,提供一个简洁明了的一键部署方案,确保数据库服务的稳定运行与长期化存储。
二、Docker及Docker Compose安装
2.1 Docker安装
Docker安装过程略有差别,根据您的操作系统选择得当的安装方式。以下以Ubuntu为例,简要说明安装步骤:
更新包管理器
sudo apt-get update
复制代码
安装Docker
sudo apt-get install -y docker.io
复制代码
启动Docker服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
复制代码
验证Docker安装
sudo docker --version
复制代码
2.2 Docker Compose安装
Docker Compose的安装相对简朴,同样以Ubuntu为例:
下载Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
复制代码
请根据https://github.com/docker/compose/releases页面上的最新版本调整上述下令中的版本号。
赋予实行权限
sudo chmod +x /usr/local/bin/docker-compose
复制代码
验证Docker Compose安装
docker-compose --version
复制代码
三、编写Docker Compose文件
接下来,我们将编写一个docker-compose.yml文件来界说MySQL和Redis的服务,以及它们之间的网络设置和长期化存储设置。
version: "3"
# 声明一个名为 'network' 的网络,配置子网和默认网关
networks:
network:
ipam:
driver: default
config:
- subnet: '177.7.0.0/16'
# 定义MySQL和Redis的持久化存储卷
volumes:
mysql:
redis:
# 定义服务
services:
mysql:
image: mysql:8.0.21
container_name: gva-mysql
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
ports:
- "13306:3306"
environment:
MYSQL_ROOT_PASSWORD: 'Aa@6447985' # 设置root用户密码
MYSQL_DATABASE: 'qmPlus'
MYSQL_USER: 'gva'
MYSQL_PASSWORD: 'Aa@6447985'
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "gva", "-pAa@6447985"]
interval: 10s
timeout: 5s
retries: 3
volumes:
- mysql:/var/lib/mysql # 将MySQL的data目录挂载到volume上,实现数据持久化
- ./init.sql:/docker-entrypoint-initdb.d/init.sql # 初始化脚本
networks:
network:
ipv4_address: 177.7.0.13 # 指定MySQL容器的IP地址
redis:
image: redis:6.0.6
container_name: gva-redis
restart: always
ports:
- '16379:6379'
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep PONG || exit 1"]
interval: 10s
timeout: 5s
retries: 3
volumes:
- redis:/data # 将Redis的数据目录挂载到volume上,实现数据持久化
networks:
network:
ipv4_address: 177.7.0.14 # 指定Redis容器的IP地址
复制代码
3.1 设置解释
networks
: 界说了一个名为network的自界说网络,其中设置了子网范围为177.7.0.0/16。这样可以为MySQL和Redis容器分配固定的IP地址,便于管理和维护。
volumes
: 为MySQL和Redis分别界说了存储卷mysql和redis,用于生存数据库文件,防止数据丢失。
services
: 这里界说了两个服务,分别是MySQL和Redis。
MySQL
:
使用指定版本的MySQL镜像。
通过command字段设置了MySQL的启动参数,包括字符集和排序规则。
environment字段设置了MySQL的环境变量,包括初始化数据库、用户名、密码等。
healthcheck字段界说了健康检查机制,帮助监控MySQL服务的正常运行状态。
volumes字段将MySQL的data目录与volume关联起来,同时挂载了初始化脚本。
networks字段将MySQL容器加入到自界说网络,并指定了其IP地址。
Redis
:
使用指定版本的Redis镜像。
healthcheck字段界说了健康检查机制,帮助监控Redis服务的正常运行状态。
volumes字段将Redis的数据目录与volume关联起来。
networks字段将Redis容器加入到自界说网络,并指定了其IP地址。
init.sql
: 这是一个初始化脚本,用于在MySQL启动时自动创建数据库qmPlus和用户gva,并授予相应的权限。详细内容如下:
CREATE DATABASE IF NOT EXISTS qmPlus;
CREATE USER IF NOT EXISTS 'gva'@'177.7.0.1' IDENTIFIED BY 'Aa@6447985';
GRANT ALL PRIVILEGES ON qmPlus.* TO 'gva'@'177.7.0.1';
FLUSH PRIVILEGES;
复制代码
留意:这里创建的用户gva设置答应从177.7.0.1进行连接,这个是容器网络的网关地址。为什么要设置为它?是为了让容器外的宿主机可以或许通过13306端口连接。
四、启动服务
在编写好docker-compose.yml文件后,即可通过Docker Compose下令来启动服务。
创建并启动容器
sudo docker-compose -f deploy/docker-compose/docker-compose.yaml up -d
复制代码
-d表现以后台模式(detached)运行容器。
检查容器状态
docker-compose ps
#进入某个容器
sudo docker exec -it gva-mysql bash
#查看容器挂载的卷
sudo docker volume ls
#进入容器的卷
sudo docker run -it --rm -v docker-compose_server:/volume-data --name temp-container busybox
#查看端口占用情况
sudo netstat -tulpn | grep :13306
复制代码
该下令将列出全部由docker-compose.yml文件界说的服务及其状态。
五、制止服务
若必要制止并移除全部由docker-compose.yml文件界说的容器,可以使用以下下令:
docker-compose down
复制代码
该下令会制止并移除全部服务对应的容器,同时保留volume中的数据,从而到达长期化存储的目的。
六、总结
通过本文,您已经了解了如何利用Docker Compose实现MySQL和Redis的一键部署,包括Docker和Docker Compose的安装、docker-compose.yml文件的编写以及服务的启动与制止。
这种方法不仅简化了数据库服务的设置和管理,还确保了数据的安全性。盼望对您有所帮助!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4