搭建solo博客

使用docker搭建

1.搭建

  • 假设你已经会使用docker

  • 拉取镜像

    1
    docker pull b3log/solo
  • 启动

1
2
3
4
5
6
7
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
b3log/solo --listen_port=801 --server_scheme=http --server_host=129.211.50.99 --server_port=80

2.更新

由于docker的更新的比较频繁,而且每次有更新都会导致无法登录管理平台,所以有时候碰到无法登录管理平台那么就得去更新一下docker 镜像,然后运行新的镜像。

  • 删除容器

    1
    docker rm solo
  • 删除镜像

    1
    2
    3
    4
    # 查询本地所有镜像 ,然后找到 solo 的 imageId
    docker images
    # 删除
    docker rmi imageId
  • 拉取镜像启动。 与 1.搭建 步骤一致

3.自动更新脚本

脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash

#
# Solo docker 更新重启脚本
#
# 1. 请注意修改参数
# 2. 可将该脚本加入 crontab,每日凌晨运行来实现自动更新
#

restart_solo(){
docker stop solo
docker rm solo
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
b3log/solo --listen_port=80 --server_scheme=http --server_host=129.211.50.99 --server_port=80
}

update_solo(){
echo "Pulling Solo's image"
isUpdate=$(docker pull b3log/solo | grep "Downloaded")
if [[ -z $isUpdate ]]
then
echo "Solo is up to date"
else
restart_solo >> /dev/null 2>&1
echo "Restarted Solo"
fi
}

# 检查当前容器状态,如果状态正常进行升级操作,否则重新进行部署
update_and_test_service(){
isCrash=$(docker ps | grep "b3log/solo")
if [[ -z $isCrash ]]
then
echo "Solo's status is unexpected, trying to restart it"
docker pull b3log/solo
restart_solo
sleep 5
isSecondCrash=$(docker ps | grep "b3log/solo")
if [[ -z $isSecondCrash ]]
then
echo "Failed to restart Solo, please check logs via 'docker logs solo'"
fi
else
update_solo
fi
}

update_and_test_service

4.使用bolo博客

文档地址: 欢迎使用 Bolo–ShowDoc (stackoverflow.wiki)

1
2
3

docker run -it -d --name bolo -p 8089:8089 bolo /run.sh