Blog.L

Blog.L

使用 Docker-Compose 部署 Halo

14
2023-09-10

1、搭建前准备

查看之前发布的教程 安装docker、docker-compose

2、创建文件夹

mkdir ~/halo && cd ~/halo

3、创建 docker-compose.yaml

vi ~/halo/docker-compose.yaml

添加以下内容:

和数据库分开(推荐)

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.20
    restart: on-failure:3
    container_name: halo
    network_mode: "host"
    volumes:
      - ./:/root/.halo2
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      # 修改为自己已有的 MySQL 配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
      - --spring.r2dbc.username=xxx
      - --spring.r2dbc.password=xxx
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 端口号 默认8090
      - --server.port=8090

或者放一起

services:

  halo:

    image: registry.fit2cloud.com/halo/halo:2.20

    container_name: halo

    restart: on-failure:3

    depends_on:

      halodb:

        condition: service_healthy

    networks:

      halo_network:

    volumes:

      - ./:/root/.halo2

    ports:

      - "8090:8090"

    command:

      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo

      - --spring.r2dbc.username=root

      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。

      - --spring.r2dbc.password=1234

      - --spring.sql.init.platform=mysql

      # 外部访问地址,请根据实际需要修改

      - --halo.external-url=http://公网ip:8090

      # 初始化的超级管理员用户名

      - --halo.security.initializer.superadminusername=admin

      # 初始化的超级管理员密码

      - --halo.security.initializer.superadminpassword=4321

  halodb:

    image: mysql:8.1.0

    container_name: halodb

    restart: on-failure:3

    networks:

      halo_network:

    command: 

      - --default-authentication-plugin=mysql_native_password

      - --character-set-server=utf8mb4

      - --collation-server=utf8mb4_general_ci

      - --explicit_defaults_for_timestamp=true

    volumes:

      - ./mysql:/var/lib/mysql

    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=1234

      - MYSQL_DATABASE=halo

networks:

  halo_network:

4、创建 Docker 自定义桥接网络

docker network create halo-net

5、MySQL 容器实例加入到该网络中

docker network connect halo-net mysql

6、启动

docker compose up -d

常用命令

  • docker compose stop # 暂停容器

  • docker compose down # 删除容器

  • docker compose pull # 更新镜像

  • docker compose restart # 重启容器

  • docker compose exec artalk bash # 进入容器

  • docker compose logs -f # 实时查看日志

7、访问

http://ip:端口号/console

更新版本

1、停止halo
cd ~/halo && docker compose down

```

2、备份数据
cp -r ~/halo ~/halo.archive

3、更新 halo 服务
修改 halo 中的 docker-compose.yaml 中的镜像版本
vi docker-compose.yaml
services:

  halo:

    image: registry.fit2cloud.com/halo/halo:2.20

    container_name: halo

拉取最新镜像
docker compose pull halo

启动
docker compose up -d