因使用Halo出现数据库无法启动的情况,见issue:docker重启一直失败 · Issue #5826 · halo-dev/halo (github.com)。准备自建博客,参考:Naccl/NBlog: 🍓 Spring Boot + Vue 前后端分离博客系统 https://naccl.top (github.com)
一、MySQL数据库准备
MySQL安装采用docker的方式:
(1)拉取MySQL镜像
docker pull mysql:8.1.0
因为之前已拉取过镜像,因此直接跳过这一步
使用以下命令来查看是否已安装了 mysql镜像
docker images
(2)启动镜像
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.1.0
命令解释:
-p 3306:3306:将宿主机的 3306 端口映射到容器的 3306 端口。这意味着,当 MySQL 服务在容器内运行时,您可以通过宿主机的 IP 地址和 3306 端口访问 MySQL 服务。
--name mysql:为容器指定一个名称,这里是mysql。
--restart=always:设置容器的重启策略,always表示无论退出状态如何,容器总是重新启动。
--privileged=true:给予容器额外的权限。在某些情况下,如挂载某些目录或设备,可能需要这种权限。请注意,出于安全考虑,通常不建议在生产环境中使用--privileged。
-v /usr/local/mysql/log:/var/log/mysql:将宿主机的/usr/local/mysql/log目录挂载到容器内的/var/log/mysql目录。这样,容器内 MySQL 的日志文件将存储在宿主机的指定位置。
-v /usr/local/mysql/data:/var/lib/mysql:将宿主机的/usr/local/mysql/data目录挂载到容器内的/var/lib/mysql目录。这是 MySQL 数据文件存放的位置,通过挂载实现数据持久化。
-v /usr/local/mysql/conf:/etc/mysql:将宿主机的/usr/local/mysql/conf目录挂载到容器内的/etc/mysql目录。这样,您可以使用宿主机上的 MySQL 配置文件来配置容器内的 MySQL 服务。
-v /etc/localtime:/etc/localtime:ro:将宿主机的/etc/localtime文件挂载到容器内,ro表示以只读方式挂载。这样可以确保容器内部的时区设置与宿主机保持一致。
-e MYSQL_ROOT_PASSWORD=123456:设置环境变量MYSQL_ROOT_PASSWORD的值为123456,这将作为 MySQL root 用户的初始密码。
-d mysql:8.1.0:以 detached 模式(后台运行)启动名为mysql的容器,并使用8.1.0版本的 MySQL 镜像。
(3)查看正在运行的容器
docker ps
看到up说明启动成功
(4)远程测试连接
使用Navicat测试连接
(5)创建数据库
创建数据库nblog,执行/blog-api/nblog.sql创建表数据
二、Redis准备
同样采用docker的方式安装redis
(1)拉取镜像
docker pull redis
(2)下载redis配置文件并修改配置
下载地址:redis配置文件
bind 127.0.0.1#注释掉这部分,使redis可以外部访问
daemonize no#用守护线程的方式启动
requirepass 你的密码#给redis设置密码
appendonly yes#redis持久化 默认是no
tcp-keepalive 300#防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
logfile "access.log"日志文件
(3)创建容器
docker run -p 6379:6379 --name redis -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
注意:
要先把redis的配置文件先放入
/usr/local/redis/中
报错:
'locale-collate ""'
Bad directive or wrong number of arguments
docker logs redis启动失败时,查看报错命令原因:
docker使用的配置文件与下载的配置文件不同,docker中使用的是6.2.6版本 redis/redis.conf at 6.2.6 · redis/redis (github.com)在该网站下载配置文件的版本
(3)查看是否成功
docker ps