人生若只如初见

WXY

Halo使用DockerCompose+现有Mysql部署

2023-03-25

没有Mysql数据库参考官方文档同时在容器启动一个Mysql

官方文档参考

已有Mysql 使用halo容器+已有mysql启动

方式一 通过设置network_mode

1.x

docker-compose.yaml

version: "3"

services:
  halo_server:
    image: halohub/halo:1.6.0
    container_name: blog
    restart: on-failure:3
    network_mode: "host" #还有这行
    volumes:
      - ./:/root/.halo
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - SERVER_PORT=8090
      - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
      - SPRING_DATASOURCE_URL=jdbc:mysql://127.0.0.1:3306/数据库名称?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      - SPRING_DATASOURCE_USERNAME=数据库账户
      - SPRING_DATASOURCE_PASSWORD=数据库密码
      - HALO_ADMIN_PATH=admin
      - HALO_CACHE=memory
2.x

docker-compose.yaml

version: "3"

services:
  halo:
    image: halohub/halo:2.4
    container_name: halo
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./:/root/.halo2
    command:
      # 修改为自己已有的MySQL配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://127.0.0.1:3306/halo
      - --spring.r2dbc.username=用户名
      - --spring.r2dbc.password=密码
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=admin
      # 端口号 默认8090
      - --server.port=8090

方式二 通过host.docker.internal (推荐)

1.x

docker-compose.yaml

version: "3"

services:
  halo_server:
    image: halohub/halo:1.6.0
    container_name: blog
    ports:
      - "8090:8090"
    restart: on-failure:3
    volumes:
      - ./:/root/.halo
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - SERVER_PORT=8090
      - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal::3306/数据库名称?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      - SPRING_DATASOURCE_USERNAME=数据库账户
      - SPRING_DATASOURCE_PASSWORD=数据库密码
      - HALO_ADMIN_PATH=admin
      - HALO_CACHE=memory
    extra_hosts:
      - host.docker.internal:host-gateway
2.x

docker-compose.yaml

version: "3"

services:
  halo:
    image: halohub/halo:2.4
    container_name: halo
    restart: on-failure:3
    volumes:
      - ./:/root/.halo2
    ports:
      - "8090:8090"  
    command:
      # 修改为自己已有的MySQL配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://host.docker.internal:3306/halo
      - --spring.r2dbc.username=用户名
      - --spring.r2dbc.password=密码
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=admin
      # 端口号 默认8090
      - --server.port=8090
    extra_hosts:
      - host.docker.internal:host-gateway

两种方式区别

参考https://www.wxy97.com/archives/78

启动 Halo 服务

docker-compose up -d 

详细说明请参考官方文档