自建博客(1)

197 阅读3分钟

因使用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

image-20240513213830760.png

(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

image-20240513215545257.png

看到up说明启动成功

(4)远程测试连接

使用Navicat测试连接

image-20240513215906299.png

(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

image-20240514141911269.png