docker compose部署Halo步骤
1.创建容器组
docker pull registry.fit2cloud.com/halo/halo:2.20
root@txyiyezhou:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.fit2cloud.com/halo/halo 2.20 304b5ca28719 2 days ago 445MB
2.创建Halo目录
mkdir /halo
3.创建 docker-compose.yaml
vim /halo/docker-compose.yaml
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.20
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 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- --spring.r2dbc.password=openpostgresql
- --spring.sql.init.platform=postgresql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
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
nginx: # 新增Nginx服务
image: nginx:latest
restart: always
depends_on:
halo:
condition: service_healthy
networks:
halo_network:
ports:
- "80:80"
- "443:443"
volumes:
- /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /opt/nginx/ssl:/etc/nginx/ssl
- ./halo2:/root/.halo2
environment:
- TZ=Asia/Shanghai
networks:
halo_network:
4.启动 Halo 服务
docker-compose config # 验证语法
docker-compose up -d # 启动服务
docker-compose logs -f # 查看日志
5.用浏览器访问 /console 即可进入 Halo 管理页面,首次启动会进入初始化页面。
6.重启
docker compose up -d --no-deps hal
7.停止并删除容器、网络
执行 docker-compose down 命令,这会移除所有由 Compose 创建的容器、网络及默认的匿名卷(但不会删除命名卷或绑定挂载的目录)
docker-compose down
8.nginx配置
worker_processes auto;
events {
# 每个worker最大连接数
worker_connections 10240;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# HTTP访问自动跳转至HTTPS
server {
listen 80;
server_name dpca.top www.dpca.top;
return 301 https://$host$request_uri;
}
# 主服务:HTTPS配置
server {
listen 443 ssl http2;
server_name dpca.top www.dpca.top;
# SSL证书配置
ssl_certificate /etc/nginx/ssl/dpca.top.pem;
ssl_certificate_key /etc/nginx/ssl/dpca.top.key;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://halo:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
}
}
}