使用 Docker Compose 部署 参考链接
环境搭建
- 树莓派docker环境搭建,以及硬盘挂载。参考: 树莓派搭建私有云
创建容器组
在挂载的硬盘位置下,创建一个文件夹,以
~/disk/halo
为例:mkdir ~/disk/halo && cd ~/disk/halo
创建
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初始化配置。
配置nginx 反向代理
- 安装nginx 参考
- 设置路由器端口转发
在 /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
配置域名解析
- 如果你是固定的公网ip,那么直接解析到公网ip地址,如果不是,解析DDNS域名地址。
### 重启路由器,并尝试域名访问