提示
根据官方文档,我为你整理了详细的部署步骤:
安装 Docker 和 Docker Compose
验证安装
bashdocker --version docker-compose --version
bashmkdir ~/halo && cd ~/halo
⚠️ 重要:所有数据都会保存在这个目录,请妥善保管!
根据你的需求选择以下配置之一(推荐使用 PostgreSQL):
创建 docker-compose.yaml 文件:
bashnano docker-compose.yaml
复制以下内容(记得修改外部访问地址和数据库密码):
yamlversion: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=openpostgresql # 改成你的密码
- --spring.sql.init.platform=postgresql
- --halo.external-url=http://localhost:8090/ # 改成你的域名或IP
halodb:
image: postgres:15.4
restart: on-failure:3
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=openpostgresql # 与上面保持一致
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
networks:
halo_network:
如果你更熟悉 MySQL,可以使用这个配置(同样创建 docker-compose.yaml):
yamlversion: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.21
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
environment:
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
- --spring.r2dbc.password=o#DwN&JSa56 # 改成你的密码
- --spring.sql.init.platform=mysql
- --halo.external-url=http://localhost:8090/ # 改成你的域名或IP
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:
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56 # 与上面保持一致
- MYSQL_DATABASE=halo
networks:
halo_network:
bash# 启动容器
docker-compose up -d
# 查看实时日志
docker-compose logs -f
8090 端口添加到安全组bash# CentOS/RHEL
firewall-cmd --add-port=8090/tcp --permanent
firewall-cmd --reload
# Ubuntu/Debian
ufw allow 8090/tcp
http://你的IP:8090/console💡 建议:如果要使用域名,请先配置好反向代理和域名解析再进行初始化
docker-compose.yaml 中的镜像版本:
yamlimage: registry.fit2cloud.com/halo/halo:2.21 # 改成新版本号
bashdocker-compose up -d
bash# 查看运行状态
docker-compose ps
# 停止服务
docker-compose stop
# 启动服务
docker-compose start
# 重启服务
docker-compose restart
# 删除容器(数据不会丢失)
docker-compose down
如果你有域名,建议配置 Nginx 反向代理:
nginxupstream halo { server 127.0.0.1:8090; } server { listen 80; server_name www.yourdomain.com; client_max_body_size 1024m; location / { proxy_pass http://halo; proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
配置完成后记得修改 docker-compose.yaml 中的 halo.external-url 为你的域名!
本文作者:__22号仔Stringer🫧
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!