Docker 实现从零开始搭建 SOLO 个人博客的方法步骤

本贴最后更新于 184 天前,其中的信息可能已经渤澥桑田

配置 yum 源

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 docker

sudo yum install -y docker-ce docker-ce-cli containerd.io

启动

systemctl enable docker --now

配置加速

这里额外添加了 docker 的生产环境核心配置 cgroup

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

测试:

输入 docker version 看到如下显示就安装成功了

image.png

一、安装 mysql 主从数据库

我们前面已经安装了 docker,这里我们直接用命令一键部署 mysql 数据库(笔者部署的主从的 mysql)

1.1、mysql 环境准备

mkdir -p /data/master/data/mysql-master  &&  mkdir -p /data/master/data/mysql-slave  ##数据目录
mkdir -p /data/master/master && mkdir -p /data/master/slave ##配置目录

往配置目录分别放两个配置文件,master.cnf slave.cnf 内容分别如下:

[root@website master]# cat master/master.cnf
[mysqld]
log-bin=mysql-bin
binlog_format=row
server-id=1
log-error=/var/log/mysqld.log
 
 
[root@website master]# cat slave/slave.cnf
[mysqld]
log-bin=mysql-bin
binlog_format=row
server-id=2
log-error=/var/log/mysqld.log

1.2、启动 mysql 主库从库

注意:这里的密码设置为 123456,将 mysql 的默认数据存放目录映射给了我的/data/master/data

 docker run -itd  --name mysql-master -v /data/master/data/mysql-master:/var/lib/mysql -v /data/master/master:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.6
 docker run -itd --name mysql-slave -v /data/master/data/mysql-slave:/var/lib/mysql -v /data/master/slave:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3316:3306 mysql:5.6


1.3、登陆 mysql 主库

docker ps -a ## 查看两个mysql数据库的状态是否都是UP
docker exec -it mysql-master  /bin/bash
mysql -u root -p123456  ## 登陆mysql
show variables like 'log_bin'; ##查看bin-log的开启状态,如果是ON代表开启成功,我们主从同步是一定要开binlog
show master status; ## 查询出的file名字与 Position要记一下,后面配置从库会用到 
## 创建用户并赋权
CREATE USER 'bakup'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'bakup'@'%'; 
create database solo;

1.4、登陆 mysql 从库

docker exec -it mysql-slave  /bin/bash  ## 进入从库
mysql -u root -p123456  ## 登陆mysql
change master to master_host='192.168.1.5', master_port=3306,master_user='bakup',master_password='bakup', master_log_file='mysql-bin.000001',master_log_pos=154;  ##配置主从连接
start slave;  ## 启动从库备份
show slave status\G;  ##查看状态

看到两个 YES 大功告成!

在这里插入图片描述

1.5、主从参数说明

  • master_host:主库的 IP 地址/服务器地址
  • master_port:主库的端口
  • master_user:主库开放出来的用户
  • master_password:用户的密码
  • master_log_file:主库的日志文件,二进制日志文件,进行同步的。就是上面 show master status 里面的 File
  • master_log_pos:上面 show master status 里面的 Positio

二、搭建 solo 博客

前面的准备工作都做完后,就可以开始安装 solo 了
docker 启动 solo

docker run --detach --name solo      --env RUNTIME_DB="MYSQL"     --env JDBC_USERNAME="root"     --env JDBC_PASSWORD="123456"     --publish 8080:8080     --link mysql-master:mysql-master     --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver"     --env JDBC_URL="jdbc:mysql://192.168.1.5:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"     b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=8080
 
docker logs solo ## 查看容器solo的日志
 
[INFO ]-[2021-11-12 18:30:32]-[org.b3log.solo.Server:254]: Solo is booting [ver=4.3.1, os=Linux, isDocker=true, inJar=false, luteAvailable=false, pid=1, runtimeDatabase=MYSQL, runtimeMode=PRODUCTION, jdbc.username=root, jdbc.URL=jdbc:mysql://192.168.1.5:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC]
[INFO ]-[2021-11-12 18:30:34]-[org.b3log.solo.service.InitService:177]: It's your first time setup Solo, initialize tables in database [MYSQL]
[WARN ]-[2021-11-12 18:30:36]-[org.b3log.solo.service.InitService:150]: Solo has not been initialized, please open your browser to init Solo
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
2 操作
Guo123456789 在 2024-05-16 17:33:54 更新了该帖
Guo123456789 在 2024-05-14 19:35:17 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...