Linux内核之外的运维宇宙
Linux运维实战笔记:从系统架构到自动化运维

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;

    }
}

}

posted on 2025-05-22 15:30  一叶舟-小刀哥  阅读(22)  评论(0)    收藏  举报