侧边栏壁纸
  • 累计撰写 46 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

利用Docker Compose部署Halo博客全套教程【QC-24-2-20】

加夫列尔·加西亚·马尔克斯
2024-02-20 / 0 评论 / 2 点赞 / 46 阅读 / 18115 字 / 正在检测是否收录...
温馨提示:
有问题欢迎加入QQ交流群交流:461796942
广告 广告

利用Docker Compose部署Halo博客全套教程

官方文档地址使用 Docker Compose 部署 | Halo 文档

操作系统:centos7.9 (全部代码可以直接复制,注意密码修改为自己的)

一、Docker安装

1.下载工具包集合

 yum install -y yum-utils

2.加载阿里云镜像

 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.将服务器上的软件包信息下载并存储在本地

 yum makecache

4.创建目录

 sudo mkdir -p /etc/docker

5.使用加速命令

阿里云=>搜索容器镜像服务=>容器镜像服务=>管理控制台=>镜像工具=>镜像加速器=>CentOS

5.1阿里云=>搜索容器镜像服务

5.2容器镜像服务

5.3管理控制台

5.4镜像工具=>镜像加速器=>CentOS(复制蓝色框内的内容替换下面相同的位置)

直接复制以下代码也可以,复制进去按下回车

 sudo tee /etc/docker/daemon.json << 'EOF'
 {
   "bip": "172.160.160.1/24",
   "registry-mirrors": ["https://e2tgadmg.mirror.aliyuncs.com"],
   "exec-opts": ["native.cgroupdriver=systemd"],
   "log-driver": "json-file",
   "log-opts": {
     "max-size" :"256m","max-file":"10"
   }
 }
 EOF

二、docker-compose安装

1.安装doker版本docker-ce-20.10.21 docker-ce-cli-20.10.21 containerd.io-1.6.9(也可查看官网文档最新版本)

 yum install -y docker-ce-20.10.21 docker-ce-cli-20.10.21 containerd.io-1.6.9

2.设置重新加载系统服务、开机自启、重新启动

 systemctl daemon-reload
 systemctl enable docker
 systemctl restart docker

3.将docker-compose从本地放进去//或者从网络下载

 #下载命令
 curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

也可以先下载到本地再直接上传至服务器内,网络下载较慢(该文件也在本文件夹内)

4.将docker-compose放到/user/local/bin/下面

 mv docker-compose /usr/local/bin/

5.给该文件添加可执行权限(该文件原本只有r和w权限没有x权限)

 chmod +x /usr/local/bin/docker-compose

三、设置配置文件

1.创建一个文件夹

 mkdir ~/halo && cd ~/halo

2.编辑文件修改密码(要用vi编辑,修改代码内两处标注位置密码一致)

注意:端口号设置的为8090,后面访问需要用到

 [root@qcc halo]# vi ~/halo/docker-compose.yaml

代码复制进去,修改下标注的两处密码,两处密码需要一致

 version: "3"
 ​
 services:
   halo:
     image: halohub/halo:2.12
     container_name: halo
     restart: on-failure:3
     depends_on:
       halodb:
         condition: service_healthy
     networks:
       halo_network:
     volumes:
       - ./halo2:/root/.halo2
     ports:
       - "8090:8090"
     healthcheck:
       test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
       interval: 30s
       timeout: 5s
       retries: 5
       start_period: 30s
     command:
       - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
       - --spring.r2dbc.username=root
       # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
       - --spring.r2dbc.password=o#DwN&JSa56
       - --spring.sql.init.platform=mysql
       # 外部访问地址,请根据实际需要修改
       - --halo.external-url=http://localhost:8090/
 ​
   halodb:
     image: mysql:8.1.0
     container_name: halodb
     restart: on-failure:3
     networks:
       halo_network:
     command: 
       - --default-authentication-plugin=caching_sha2_password
       - --character-set-server=utf8mb4
       - --collation-server=utf8mb4_general_ci
       - --explicit_defaults_for_timestamp=true
     volumes:
       - ./mysql:/var/lib/mysql
       - ./mysqlBackup:/data/mysqlBackup
     ports:
       - "3306:3306"
     healthcheck:
       test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
       interval: 3s
       retries: 5
       start_period: 30s
     environment:
       # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
       - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
       - MYSQL_DATABASE=halo
 ​
 networks:
   halo_network:

3.启动 Halo 服务

启动服务后,在浏览器输入虚拟机的ip+端口号8090即可访问并设置

 cd ~/halo需要在该目录下执行下面命令
 ​
 docker-compose up -d

四、效果展示

插件、主题等可自行下载选择

搜索好看的主题并且设置

下载好了的主题需要点启用才可刷新生效

五、绑定域名和添加SSL证书(不需要可忽略)

安装 Nginx Proxy Manager官方文档地址

1.命令配置

1.1创建一个文件夹来存放 NPM 的 docker-compose.yml 文件:

 mkdir -p ~/data/docker_data/nginxproxymanager   

1.2 进入该文件夹

 cd ~/data/docker_data/nginxproxymanager   

1.3编辑配置文件

 vi docker-compose.yml

1.4复制代码粘入(建议删掉注释)

 version: '3'
 services:
   app:
     image: 'jc21/nginx-proxy-manager:latest'
     restart: unless-stopped
     ports:
       - '80:80'              # 不建议修改端口
       - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
       - '443:443'            # 不建议修改端口
     volumes:
       - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
       - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建

注意:安装了 NPM 之后,就不需要再安装 Nginx 了,否则会端口冲突(不建议修改 NPM 的 80、443 端口)。如果你的服务器安装了宝塔面板,也可以和 NPM 一起使用,只要你到软件后台把宝塔安装的 Nginx 关闭或者卸载即可。

1.5启动 NPM

 docker-compose up -d     # -d 表示后台运行

 docker compose up -d     # 如果你用的是 docker-compose-plugin 的话,用这条命令

2.web界面配置【域名绑定】

使用 http://127.0.0.1:81 就可以访问 NPM 的网页端了。(注意把 127.0.0.1 替换成你实际服务器的 IP)

2.1账户密码修改,保存之后,会让我们修改密码(建议用一个复杂的密码)

2.1.1给 Halo 来添加一个反向代理
2.1.2接着点击 Add Proxy Host,弹出如下对话框

Domain Names :填我们 Halo 网站的域名,首先记得做好 DNS 解析,把域名绑定到我们的服务器的 IP 上

Scheme :默认 http 即可,除非你有自签名证书

Forward Hostname/IP :填入服务器的 IP,或者 Docker 容器内部的 IP(如果 NPM 和 Halo 搭建在同一台服务器上的话)

Forward Port:填入 Halo 映射出的端口,这边默认是 8090

Cache Assets :缓存,可以选择打开

Block Common Exploits: 阻止常见的漏洞,可以选择打开

Websockets Support :WS 支持,可以选择打开

Access List: 这个是 NPM 自带的一个限制访问功能,这边我们不管,后续可以自行研究

2.1.3根据样列配置自己的

因为样例的 NPM 和 Halo 搭建在同一台 VPS 上,所以这边的 IP,图中填的是 172.17.0.1,为 Docker 容器内部的 IP 地址,

可以通过下面的命令查询:

ip addr show docker0
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:e4:a3:b5:b9 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

这边的 IP 是 172.17.0.1,填入这个 IP,可以不用打开防火墙的 8090 端口。

当然,如果你的 NPM 和 Halo 不在同一台服务上,你需要在 IP 部分填入 你的 Halo 所在的服务器的 IP,并在服务商(部分服务商如腾讯、阿里)的后台打开 8090 端口。

3.web界面配置【SSL证书绑定】

3.1点开刚才部署好的New Proxy Host

3.2打开如图所示开关

4.一切安装代码复制,不出意外你将配置完成,恭喜你拥有自己的网站,SSL证书会三个月自动续期

2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
广告 广告

评论区