docker安装halo+mysql+nginx搭建个人博客
简介
一款现代化的开源博客/CMS系统。学习地址:https://halo.run/ 本文主要介绍iStoreOS(openWRT)软路由,使用docker安装halo+mysql,最后实现一个使用域名访问的个人博客网站。
在线体验
用户名:
demo
密码:
P@ssw0rd123..
注:本系统在1台已安装的Docker的软路由器或(cenots/ubantu)/OpenWRT或iKAI系统,本案例属于本地部署,需要外网访问要满足以下条件之一:
电信申请动态公网+备案域名+lucky软件
DDNS-GO动态域名解析工具(自动分配第三方域名)
利用NPS(NPC)/FRPS(FRPC)内网穿透工具+公网服务器+备案域名
一.部署MSQL
docker安装mysql
# 创建 Docker 自定义桥接网络
docker network create halo-mysql-nginx-net
# 拉取 MySQL 镜像
docker pull mysql:8.0.27
# 创建文件夹
mkdir -p ~/.halo/mysql
# 启动 MySQL 实例 xxxxxxxxx为你自己设置的密码
docker run --name halo-mysql -v ~/.halo/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxxxxx --net halo-mysql-nginx-net --restart=unless-stopped -d mysql:8.0.27
# 进入 MySQL 容器中登录 MySQL 并创建 Halo 需要的数据库
docker exec -it halo-mysql /bin/bash
# 登录 MySQL
mysql -u root -p
# 输入 MySQL 数据库密码
# 创建数据库
create database halodb character set utf8mb4 collate utf8mb4_bin;
# 使用 exit 退出MySQL
# 使用 exit 退出容器 因为之前设置了--restart=unless-stopped 不用担心容器停止
docker安装mysql命令解释
--name halo-mysql # 设置容器名字
-v ~/.halo/mysql:/var/lib/mysql # 卷挂载。 本地地址:容器内部地址
-e MYSQL_ROOT_PASSWORD=xxxxxxxx # 设置mysql密码
--net halo-mysql-nginx-net # 挂载网络
--restart=unless-stopped # 除非手动停止否则自动重启
-d # 后台运行
mysql:8.0.27 # mysql版本
二.docker安装halo
# 创建 Halo 工作目录
mkdir -p ~/.halo/halo && cd ~/.halo/halo
# 下载示例配置文件到工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
# vim编辑配置文件
vim application.yaml
# 你需要做如下几个步骤:
# 注释 H2 database configuration.部分
# 启用 MySQL database configuration.部分
# 修改 datasource 下的 url 中的 ip 地址部分为容器名称并修改密码为您设定的 MySQL 密码
# 可以进入vim 后 ggdG 删除所有内容,再复制以下内容 粘贴
# 修改后的application.yaml文件内容如下:
server:
port: 8090
# Response data gzip.
compression:
enabled: false
spring:
datasource:
# H2 database configuration.
#driver-class-name: org.h2.Driver
#url: jdbc:h2:file:~/.halo/db/halo
#username: admin
#password: 123456
# MySQL database configuration.
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://halo-mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: xxxxxxxx
# H2 database console configuration.
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false
halo:
# Your admin client path is https://your-domain/{admin-path}
admin-path: admin
# memory or level
cache: memory
启用halo
# 启用
docker run -it -d --name halo -p 8090:8090 -v ~/.halo/halo:/root/.halo --net halo-mysql-nginx-net --restart=unless-stopped halohub/halo:2.12
docker安装halo命令解释
-it -d # 运行方式
--name halo # 设置容器名字
-p 8090:8090 # 端口设置
-v ~/.halo/halo:/root/.halo # 卷挂载。 本地地址:容器内部地址
--net halo-mysql-nginx-net # 挂载网络
--restart=unless-stopped # 除非手动停止否则自动重启
halohub/halo:1.4.17 # halo版本
到这里就可以去浏览器 使用ip:8090打开个人博客网站。会看到 Halo 安装向导
三.其他
1.版本升级
拉取最新版本镜像文件
docker pull halohub/halo:2.12 # 2.12为版本号
停止运行中的容器并删除容器
docker stop halo # 停止容器
docker rm halo # 删除容器
重新创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo/halo:/root/.halo --net halo-mysql-nginx-net --restart=unless-stopped halohub/halo:2.12 # 注意版本号
2.实现https(SSL)
利用lucky工具实现端口转发+https比较简单,不再具体描述!!
评论区