使用 Docker Compose 部署 参考链接

环境搭建

创建容器组

  1. 在挂载的硬盘位置下,创建一个文件夹,以~/disk/halo为例:

     mkdir ~/disk/halo && cd ~/disk/halo
    
  2. 创建 docker-compose.yaml文件.

    • 创建 Halo + MySQL 的实例:

      vim ~/disk/halo/docker-compose.yml 
      

      文件信息如下

      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:
            - "9999:8090"
          healthcheck:
            test: ["CMD", "curl", "-f", "http://localhost:9999/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:9999/
      
        halodb:
          image: mysql:8.1.0
          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
          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:
      
    • 修改目录权限

      sudo chmod -R 777 ~/disk/halo # docker构建目录时需要权限
      
    • 运行docker环境构建命令

      cd ~/disk/halo
      docker-compose up -d #docker 会根据docker-compose.yml配置信息下载镜像并创建映射
      
    • 构建完成后浏览器访问http://localhost:9999/完成Halo初始化配置。

halo1.png

配置nginx 反向代理

  • 安装nginx 参考
  • 设置路由器端口转发

halo2.png

  • 在 /etc/nginx/sites-available/ 目录中创建一个新的配置文件 halo.conf

    sudo vim /etc/nginx/sites-available/halo.conf
    
    server {
        listen 8090;
        server_name zhangzhewang.ddns.net;  # 主域名
        client_max_body_size 1024M; #nginx 默认上传文件大小一般是2M,修改传输文件大小上限 
        location / {
            proxy_pass http://***.***.**.***:9999;  # halo 的局域网 IP 地址和端口
            #proxy_set_header Host $host; #当监听80端口时可以省略请求头端口号$server_port
            proxy_set_header Host $host:$server_port;#非80端口时不能省略,不然向服务器发送请求,无法重定向到正确URL,导致404
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    
    }
    
  • 创建一个符号链接以启用该配置文件

    sudo ln -s /etc/nginx/sites-available/halo.conf /etc/nginx/sites-enabled/
    
  • 重启nginx

    #检查 Nginx 配置是否有语法错误:
    sudo nginx -t
    
    #重新加载 Nginx 以应用新的配置
    sudo systemctl reload nginx
    
    #查看nginx监听端口
    sudo netstat -tulnp | grep nginx
    

halo3.png

配置域名解析

  • 如果你是固定的公网ip,那么直接解析到公网ip地址,如果不是,解析DDNS域名地址。
### 重启路由器,并尝试域名访问

halo4.png