banner
低点回波

低点回波

京东云服务器+docker compose 部署Halo博客

准备#

京东云轻量云主机 2 核 2G 3M 1 年费用 58 元

域名三年费用 76 元

SSL 单域名证书 1 年 30 元(我是哈 per,其实可不用)

服务器的选择#

其他地区服务器:如果有朋友直接该类服务器进行搭建的话,那自然是方便的,像网络什么的都不用担心。如果是学生的话可以考虑申请 Github student package. 申请完后使用 Azure100 刀或者是 Ocean digital200 刀代金券可以使用,总的来说还是很划算的。但是 Github student package 并不好申请,我之前折腾了一个星期,被拒绝了三四次,才成功 (┬┬﹏┬┬)。

中国大陆地区服务器:我对比了好几个云服务厂商的,现在这个时期已经过去了之前的一个优惠时期了,看腾讯云阿里云的云服务器其实都不便宜。(阿里云有一个99 元 / 年2G2 核云服务器,可以续三年,这个优惠还可以)目前来说,就我搜到的国内的云服务优惠好像就京东云比较香了

本来我看京东云网站里有好几款,也很眼馋,第一想法是想买下面这类型的:

  • 轻量云主机 2 核 4G 5M 1 年 165 元
  • 轻量云主机 2 核 4G 5M 3 年 618 元

请原谅一个拥有仓鼠囤积症的人~,只不过最终由于囊中羞涩再加上第一次买云服务器心里没有底,所以就想着先入 58 元 / 年的 2G2 核轻量云服务器试一试。

其他#

Ubuntu20.04LTS 系统 (如果是京东云的,你可以考虑用 CentOS 可能会更方便不容易出网络问题)

Xshell(用于远程控制云服务器,我觉得这个会方便一些,京东云本身提供 Web Terminal登录VNC登录, 但是因为是网页 Tab 上我总觉得用着不顺,如果嫌麻烦,可以不装~)

安装 docker 和 docker-compose#

安装 Docker Compose 并不一定要先安装 Docker,但通常情况下,Docker Compose 是用来管理和部署 Docker 容器应用的工具,所以推荐在使用 Docker Compose 之前已经安装了 Docker。

Docker Compose 基于 Docker 构建,它简化了在本地或生产环境中管理多个相关服务(如数据库、Web 服务器等)的方式,通过一个 YAML 文件定义和运行这些服务。如果你计划使用 Docker Compose 创建和管理容器化应用,那么最好先确保 Docker 已经在系统上安装并且运行正常。

更新系统并安装依赖包#

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

image-20240729001843767

添加 Docker 的 GPG 密钥到 trusted. gpg. d 目录#

(这里直接添加的话我无法成功,网络超时,所有换了个阿里云的源)

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/docker-archive-keyring.gpg > /dev/null

添加 Docker 仓库#

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新包列表并安装 Docker#

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

image-20240729002026250

其实这里我有点没有搞明白这个逻辑,京东云自己的文档里面说了 CentOS 的花使用 yarm 会自动换源,可以比较快地下载,但是不支持 ubuntu, 直接那个地址下 docker 就会报错,我还换了个阿里源 docker, 问题是实际过程中 (上面这幅图) 前四步全是京东 cloud 里面下载地,只有最终那一步才是换的阿里云,不过能成功就好~

配置 Docker 使用阿里云镜像源#

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

daemon.json 文件中添加以下内容 (里面的网址去阿里云官网搜容器镜像服务 (aliyun.com),找到你对应地那个网址复制)

image-20240729003720212

{
  "registry-mirrors": ["https://<你的id号>.mirror.aliyuncs.com"]
}

image-20240729003924487

然后按 ctrl + x 退出,yes 保存,回车保存

重启 Docker 服务#

sudo systemctl daemon-reload
sudo systemctl restart docker

安装 Docker Compose#

这里我耗费了很长时间

正常流程,如下

更新软件包列表#

首先,确保你的软件包列表是最新的:

sudo apt update

安装 Docker#

如果你还没有安装 Docker,可以使用以下命令安装:

sudo apt install docker.io

启动并设置 Docker 在开机时启动:

sudo systemctl start docker
sudo systemctl enable docker

下载 Docker Compose#

使用以下命令下载最新版本的 Docker Compose。你可以在 GitHub Releases 页面找到最新的版本号,并替换 v2.10.2 为最新的版本号:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

在这一步我出现了网络延时问题.

image-20240729004607251

死活下载不了

这里提供两种方法

使用 xftp 上传#

现在自己的电脑下好,再使用 xftp 上传,并将上传文件名改为 docker-compose, 注意路径

image-20240729004741493

使用 ghproxy 代理加速#

本文完成时,这个代理可用 https://mirror.ghproxy.com/ ,只需在后面加上需要下载的 github 链接

curl -SL https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

赋予执行权限#

下载完成后,需要给文件赋予可执行权限:

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

验证安装#

检查 Docker Compose 是否安装成功,查看版本号:

docker-compose --version

Docker Compose 搭建 Halo 博客#

参考官方文档使用 Docker Compose 部署 | Halo 文档

  1. 在系统任意位置创建一个文件夹,此文档以 ~/halo 为例。
mkdir ~/halo &&  cd ~/halo 
  1. 在用 docker-compose 拉取之前需要先创建一个 docker-compose. yaml 文件
    官网提供了三种实例
    1. 创建 Halo + PostgreSQL 的实例
    2. 创建 Halo + MySQL 的实例
    3. 仅创建 Halo 实例(使用默认的 H2 数据库)官方不推荐在生产环境使用默认的 H2 数据库

本文采用第一种 Halo + PostgreSQL

路径: ~/halo/docker-compose.yaml

nano ~/halo/docker-compose.yaml

输入

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.17
    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:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      #
      #
      #这里要修改哦
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql  #password密码改一下,不要跟官方一样,其他什么都行,不然潜在危险
      - --spring.sql.init.platform=postgresql
      
      # 外部访问地址,请根据实际需要修改,根据你购买主机赠送你的ip地址进行修改
      # 比如我的是116.X.X.241,我下面这句话就改成- --halo.external-url=http://116.X.X.241:8090/
      
      - --halo.external-url=http://localhost:8090/
  halodb:
    image: postgres:15.4
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql  #这里改成和上面spring.r2dbc.password一样的
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

官方文档出有写出具体的参数解释

参数名描述
spring.r2dbc.url数据库连接地址,详细可查阅下方的 数据库配置
spring.r2dbc.username数据库用户名
spring.r2dbc.password数据库密码
spring.sql.init.platform数据库平台名称,支持 postgresqlmysqlh2
halo.external-url外部访问链接,如果需要在公网访问,需要配置为实际访问地址

数据库配置:

链接方式链接地址格式spring.sql.init.platform
PostgreSQLr2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}postgresql
MySQLr2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}mysql
MariaDBr2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}mariadb
H2 Databaser2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSEh2
  1. 启动 Halo 服务

    docker-compose up -d
    

    这里我再次出现了网络问题,阿里云镜像换源后也没有用,虽然官方文档在一开始就说,这个源是从他们自建的镜像库走的,

    image-20240729010125869

    可是我死活下载不下来,这里感谢 1panel 的镜像源,大家不要恶意使用,自从 6 月各大镜像源被关以后,想找个好用的镜像源真难 /(ㄒ o ㄒ)/~~, 感谢 1panel

跟之前同样的操作

sudo nano /etc/docker/daemon.json

daemon.json 文件中换成以下内容

{
  "registry-mirrors": ["https://docker.1panel.live"]
}

如果有朋友换完之后还是不行,我能想到的只有利用阿里云的镜像仓库服务了,可以自建一个镜像仓库去下载你上传好的 docker 镜像

到这里为止,博客就大功告成了,输入 http://{你的ip}:8090/console 就可以访问博客的后台了,对了!

很重要的一点不能忘记,在京东云对应服务器的页面把防火墙的 8090 端口打开,否则访问不了.

image-20240729010930265

进入后台,先注册一个管理员账号,就可以编辑博客主题,上传文章了.

输入 http://{你的ip}:8090/ 即为博客页面.

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。