侧边栏壁纸
博主头像
YuWei

塔塔开!

  • 累计撰写 25 篇文章
  • 累计创建 12 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

阿里云+docker-compose部署Halo

温馨提示:
本文最后更新于89天前,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1.前期准备

  • 阿里云服务器

  • 域名(非必须)

  • 开放需要的端口(比如8090,8080,3306,80等等)

  • docker和docker-compose

2.步骤

2.1安装docker和docker-compose

这个很简单了,无脑安装即可,网上大把(忘记怎么安了)

安装完检查下是否安装成功

docker --version
docker-compose --version

2.2编排Halo

  • 创建docker-compose.yml文件,准备需要用到的,Halo、mysql、nginx进行编排(这里已经宝塔安装好了mysql、nginx)如果需外部数据库自行准备,需改docker-compose.yml配置

  • 在docker-compose.yml同目录下运行启动

docker-compose up -d
  • 测试是否成功,输入自己ip地址或者域名加上对应端口进行访问,出现一下页面表示成功

  • 配置站点基础信息

docker-compose.yml配置,可以参考(宝塔版,已准备好mysql+nginx)

version: "3"

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

docker-compose.yml配置,(halo+mysql+nginx)

version: "3"

services:
  mysql:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password
      MYSQL_DATABASE: halo
      MYSQL_USER: halo
      MYSQL_PASSWORD: halo
    volumes:
      - ./mysql_data:/var/lib/mysql
    networks:
      - halo-network

  halo:
    image: registry.fit2cloud.com/halo/halo:2.20
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./halo2:/root/.halo2
    environment:
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo
      - --spring.r2dbc.username=halo
      - --spring.r2dbc.password=halo
      - --spring.sql.init.platform=mysql
      - --halo.external-url=http://your-domain-or-ip
      - --server.port=8090
      - --server.address=0.0.0.0
    depends_on:
      - mysql
    networks:
      - halo-network

  nginx:
    image: nginx:alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./certs:/etc/nginx/certs
    networks:
      - halo-network

networks:
  halo-network:
    driver: bridge

2.3配置域名或者ip和方向代理

  • 创建nginx.conf文件在yml挂载的位置

  • nginx.conf文件内容参考

events {}

http {
    server {
        listen 80;
        server_name your-domain.com; # 替换为你的域名或者ip

        location / {
            proxy_pass http://localhost:8090; # 后端服务地址和端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}
  • 重启nginx

sudo nginx -s reload
  • 测试访问你的域名或者ip访问

  • Nginx日志排查

sudo tail -f /var/log/nginx/error.log

2

评论区