你可以使用 docker-compose 来一键搭建 Nginx 和 Halo 博客。下面是一个示例的 docker-compose.yml 文件,展示了如何配置 Nginx 作为反向代理,并使用 Halo 博客。

1. 创建 docker-compose.yml 文件

在你的项目目录中创建一个 docker-compose.yml 文件,内容如下:

yaml复制代码version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./logs/nginx:/var/log/nginx
    depends_on:
      - halo

  halo:
    image: halohub/halo:latest
    container_name: halo
    ports:
      - "8090:8090"
    environment:
      - HALO_EXTERNAL_URL=http://your-domain.com
    volumes:
      - ./halo:/root/.halo2

2. 创建 Nginx 配置文件

在你的项目目录中创建一个 nginx.conf 文件,内容如下:

nginx复制代码events {
    worker_connections 1024;
}

http {
    server {
        listen 80;
        server_name your-domain.com;

        location / {
            proxy_pass http://halo: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;
        }

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    }
}

3. 启动 Docker Compose

在项目目录中运行以下命令启动服务:

bash
复制代码
docker-compose up -d

4. 访问你的博客

在浏览器中打开 http://your-domain.com,你应该能够看到 Halo 博客的欢迎页面。

5. 注意事项

  • 域名:确保将 your-domain.com 替换为你的实际域名或服务器 IP 地址。
  • 防火墙:确保你的服务器开放了必要的端口(例如 80 端口)。
  • 持久化存储./halo:/root/.halo2 挂载了 Halo 的数据目录,以确保数据持久化。你可以根据需要调整挂载路径。
  • 日志:Nginx 的访问日志和错误日志会保存在 ./logs/nginx 目录中。

这样,你就可以通过 Docker Compose 一键搭建 Nginx 和 Halo 博客环境了。