个人常用项目Docker的Compose配置模板

NapCat

接入QQ消息框架

# docker-compose.yml
services:
  napcat:
    environment:
      - NAPCAT_UID=0
      - NAPCAT_GID=0
    ports:
      - 3000:3000
      - 3001:3001
      - 6099:6099
    container_name: napcat
    network_mode: bridge
    restart: always
    image: mlikiowa/napcat-docker:latest
    volumes:
      - ./napcat/config:/app/napcat/config
      - ./ntqq:/app/.config/QQ
      - /volume1/docker/app:/app/sharedFolder

AsrtBot

AI智能体

version: '3.8'

# 当接入 QQ NapCat 时,请使用这个 compose 文件一键部署: https://github.com/NapNeko/NapCat-Docker/blob/main/compose/astrbot.yml

services:
  astrbot:
    image: soulter/astrbot:latest
    container_name: astrbot
    restart: always
    ports: # mappings description: https://github.com/AstrBotDevs/AstrBot/issues/497
      - "6185:6185" # 必选,AstrBot WebUI 端口
      - "6199:6199" # 可选, QQ 个人号 WebSocket 端口
      # - "6195:6195" # 可选, 企业微信 Webhook 端口
      # - "6196:6196" # 可选, QQ 官方接口 Webhook 端口
      - "8899:8899" # 表情包偷取插件
      - "1451:1451" # 读空气插件
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/AstrBot/data
      # - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - /volume1/docker/app:/app/sharedFolder

AsrtBot-t2i

给AsrtBot使用的一个渲染HTML为图片的服务

version: "3.9"

services:
  astrbot-t2i:
    image: soulter/astrbot-t2i-service:latest
    container_name: astrbot-t2i
    restart: always
    ports:
      - "8999:8999"
    stdin_open: true
    tty: true

Halo

个人建站

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo-pro:2.24.2
    container_name: halo
    restart: always
    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=openpostgresqlqsc
      - --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=openpostgresqlqsc
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

FRP客户端

frp内网穿透客户端

services:
    frpc:
        container_name: frpc
        image: ghcr.io/fatedier/frpc:v0.69.1
        network_mode: host
        restart: unless-stopped
        volumes:
            - ./data/frpc.toml:/etc/frp/frpc.toml
            - /etc/localtime:/etc/localtime:ro
        command: ["-c", "/etc/frp/frpc.toml"]

frpc.toml 文件内容

serverAddr = "frp服务的IP地址"
serverPort = 7000  

auth.method = "token"
auth.token = "服务端配置密钥"

[[proxies]]
name = "www"
type = "tcp"
localIP = "192.168.1.5"
localPort = 8090
remotePort = 5203

[[proxies]]
name = "asrtbot"
type = "tcp"
localIP = "192.168.1.5"
localPort = 6185
remotePort = 5300

[[proxies]]
name = "napcat"
type = "tcp"
localIP = "192.168.1.5"
localPort = 6099
remotePort = 5301