macOS 12.7.6部署Ollama+Dify避坑指南

macOS 12.7.6部署Ollama+Dify避坑指南

    • 一、背景
    • 二、核心组件说明
    • 三、详细部署步骤
      • [1. 关闭SIP(系统完整性保护)](#1. 关闭SIP(系统完整性保护))
      • [2. 安装基础组件](#2. 安装基础组件)
        • [2.1 Docker Desktop](#2.1 Docker Desktop)
        • [2.2 Docker-compose](#2.2 Docker-compose)
        • [2.3 Ollama](#2.3 Ollama)
      • [3. 配置Ollama](#3. 配置Ollama)
        • [3.1 启动服务](#3.1 启动服务)
        • [3.2 下载模型](#3.2 下载模型)
      • [4. 配置Dify](#4. 配置Dify)
      • [5. 离线环境处理](#5. 离线环境处理)
        • [5.1 镜像打包](#5.1 镜像打包)
        • [5.2 目标机器导入](#5.2 目标机器导入)
    • 四、部署验证

一、背景

Ollama是一个本地化大语言模型运行框架,支持在个人电脑上运行各类开源AI模型(如Llama、Mistral等)。Dify则是一个可视化AI应用开发平台,通过图形界面快速构建AI工作流。本文记录在macOS 12.7.6系统下部署两者的避坑指南。


二、核心组件说明

组件 作用 必装原因
Ollama 本地模型运行引擎 提供LLM推理能力
Dify AI应用开发平台 可视化编排AI工作流
Docker 容器化环境 解决依赖冲突问题
Docker-compose 容器编排工具 管理多容器应用

三、详细部署步骤

1. 关闭SIP(系统完整性保护)

参考链接: macOS开启或关闭SIP

为什么需要关闭

macOS的SIP会阻止对系统目录(如/usr/local/bin)的修改,而Dify需要在此目录更新关键组件。

操作步骤

  1. 重启Mac,立即长按 Command ⌘ + R 进入恢复模式

  2. 顶部菜单栏选择 实用工具 > 终端

  3. 执行关闭命令:

    bash 复制代码
    csrutil disable  # 禁用SIP
    reboot          # 重启系统
  4. 重启后验证状态:

    bash 复制代码
    csrutil status  # 应显示"System Integrity Protection status: disabled"

⚠️ 安全提示:完成部署后可重新启用SIP(csrutil enable),但需确保所有组件运行稳定


2. 安装基础组件

2.1 Docker Desktop

下载地址官方下载链接
版本要求 :必须使用 2.1.0.5(40693) 版本,新版Docker与macOS 12存在兼容性问题
安装后检查

bash 复制代码
docker --version  # 应输出 Docker version 19.03.5, build 633a0ea
2.2 Docker-compose

下载地址v2.38.2版本
安装命令

bash 复制代码
# 替换系统旧版本
sudo cp ~/Downloads/docker-compose-darwin-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose version  # 应输出 Docker Compose version v2.38.2
2.3 Ollama

下载地址官方DMG安装包
安装方式:双击安装包完成安装


3. 配置Ollama

3.1 启动服务
bash 复制代码
# 允许网络访问(默认只能本地访问)
export OLLAMA_HOST="0.0.0.0:8000"

# 启动服务(会常驻后台)
ollama serve &

验证服务 :浏览器访问 http://localhost:8000 应返回Ollama版本信息

3.2 下载模型
bash 复制代码
# 下载嵌入模型(用于文本向量化)
ollama pull nomic-embed-text:latest

# 下载对话模型(7B参数版本)
ollama pull deepseek-r1:7b

模型管理技巧

bash 复制代码
# 查看已下载模型
ollama list

# 模型保存路径
ls ~/.ollama/models  # 所有模型存储在此目录

💡 离线环境部署

  1. 在网络环境执行 ollama pull 下载模型
  2. 拷贝 ~/.ollama/models 到目标机器
  3. 设置环境变量:export OLLAMA_MODELS=/path/to/models

4. 配置Dify

4.1 关键配置修改

为什么需要修改

默认配置针对Linux优化,在macOS上需要调整资源限制和权限设置

以下文件发生修改

docker/.env
bash 复制代码
--- OLD/.env
+++ NEW/.env
@@ -1035,16 +1035,17 @@
 
 FORCE_VERIFYING_SIGNATURE=true
 
-PLUGIN_PYTHON_ENV_INIT_TIMEOUT=120
-PLUGIN_MAX_EXECUTION_TIMEOUT=600
-# PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple
-PIP_MIRROR_URL=
+PLUGIN_PYTHON_ENV_INIT_TIMEOUT=640
+PLUGIN_MAX_EXECUTION_TIMEOUT=2400
+PIP_MIRROR_URL=https://mirrors.aliyun.com/pypi/simple/
+#PIP_MIRROR_URL=
 
 # https://github.com/langgenius/dify-plugin-daemon/blob/main/.env.example
 # Plugin storage type, local aws_s3 tencent_cos azure_blob
 PLUGIN_STORAGE_TYPE=local
 PLUGIN_STORAGE_LOCAL_ROOT=/app/storage
-PLUGIN_WORKING_PATH=/app/storage/cwd
+#PLUGIN_WORKING_PATH=/app/storage/cwd
+PLUGIN_WORKING_PATH=/app/cwd
 PLUGIN_INSTALLED_PATH=plugin
 PLUGIN_PACKAGE_CACHE_PATH=plugin_packages
 PLUGIN_MEDIA_CACHE_PATH=assets
docker/docker-compose.yaml
yaml 复制代码
--- OLD/docker-compose.yaml
+++ NEW/docker-compose.yaml
@@ -451,8 +451,8 @@
   MARKETPLACE_ENABLED: ${MARKETPLACE_ENABLED:-true}
   MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}
   FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true}
-  PLUGIN_PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-120}
-  PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-600}
+  PLUGIN_PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-640}
+  PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-6000}
   PIP_MIRROR_URL: ${PIP_MIRROR_URL:-}
   PLUGIN_STORAGE_TYPE: ${PLUGIN_STORAGE_TYPE:-local}
   PLUGIN_STORAGE_LOCAL_ROOT: ${PLUGIN_STORAGE_LOCAL_ROOT:-/app/storage}
@@ -488,6 +488,11 @@
 services:
   # API service
   api:
+    ulimits:
+      nproc: 65535
+    security_opt:
+      - seccomp:unconfined
+    privileged: true
     image: langgenius/dify-api:1.3.1
     restart: always
     environment:
@@ -519,6 +524,11 @@
   worker:
     image: langgenius/dify-api:1.3.1
     restart: always
+    ulimits:
+      nproc: 65535
+    security_opt:
+      - seccomp:unconfined
+    privileged: true
     environment:
       # Use the shared environment variables.
       <<: *shared-api-worker-env
@@ -604,6 +614,11 @@
 
   # The DifySandbox
   sandbox:
+    ulimits:
+      nproc: 65535
+    security_opt:
+      - seccomp:unconfined
+    privileged: true
     image: langgenius/dify-sandbox:0.2.11
     restart: always
     environment:
@@ -628,8 +643,13 @@
 
   # plugin daemon
   plugin_daemon:
+    ulimits: 
+      nproc: 65535
+    security_opt:
+      - seccomp:unconfined
     image: langgenius/dify-plugin-daemon:0.0.9-local
     restart: always
+    privileged: true
     environment:
       # Use the shared environment variables.
       <<: *shared-api-worker-env
@@ -644,8 +664,8 @@
       PLUGIN_REMOTE_INSTALLING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003}
       PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd}
       FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true}
-      PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-120}
-      PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-600}
+      PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-1200}
+      PLUGIN_MAX_EXECUTION_TIMEOUT: ${PLUGIN_MAX_EXECUTION_TIMEOUT:-2400}
       PIP_MIRROR_URL: ${PIP_MIRROR_URL:-}
       PLUGIN_STORAGE_TYPE: ${PLUGIN_STORAGE_TYPE:-local}
       PLUGIN_STORAGE_LOCAL_ROOT: ${PLUGIN_STORAGE_LOCAL_ROOT:-/app/storage}
4.2 启动Dify服务
bash 复制代码
cd dify/docker

# 首次启动(后台运行)
docker-compose up -d

# 查看日志(排错用)
docker-compose logs -f api
4.3 连接Ollama

在Dify控制台(http://localhost:8000)配置模型:

yaml 复制代码
API端点: http://host.docker.internal:8000/v1  # 特殊地址指向宿主机
模型名称: deepseek-r1:7b

关键说明
host.docker.internal 是Docker的保留域名,自动解析到宿主机的IP地址


5. 离线环境处理

5.1 镜像打包
bash 复制代码
# 导出所有Dify镜像
docker-compose images | awk 'FNR >2 {print $2":"$3}' | sort -u | xargs docker save | gzip > dify-images.tar.gz
5.2 目标机器导入
bash 复制代码
# 加载Dify镜像
docker load < dify-images.tar.gz

四、部署验证

  1. 在Dify创建新应用
  2. 选择 "对话型应用" 模板
  3. 模型选择 deepseek-r1:7b
  4. 输入测试问题:"Mac系统有哪些特点?"
  5. 应获得连贯的技术性回复

最终效果:您现在拥有一个完全本地的AI开发环境,支持:

  • 运行开源大语言模型(7B~70B参数)
  • 可视化编排AI工作流
  • 开发企业级AI应用
  • 所有数据100%离线处理

部署完成后,可通过 csrutil enable 重新启用SIP提升系统安全性。

相关推荐
小饼干超人5 小时前
pycharm windows/linux/mac快捷键
ide·macos·pycharm
十步杀一人_千里不留行7 小时前
RustDesk 自建中继服务器教程(Mac mini)
运维·服务器·macos
随风ada9 小时前
Windows、macOS、liunx下使用qemu搭建riscv64/linux
linux·windows·ubuntu·macos·golang·qemu·risc-v
小卡不对头9 小时前
电脑截图软件排行榜 Windows和mac电脑截图软件TOP10
windows·macos·电脑·笔记本电脑·贴图
Digitally11 小时前
5 种可行的方法:如何将 Redmi 联系人备份到 Mac
macos
干净的坏蛋11 小时前
macOS 字体管理全攻略:如何查看已安装字体及常见字体格式区
macos·策略模式
liliangcsdn13 小时前
mac mlx大模型框架的安装和使用
java·前端·人工智能·python·macos
weixin-a1530030831613 小时前
【playwright篇】教程(十六)[macOS+playwright相关问题]
macos
liliangcsdn14 小时前
smolagents - 如何在mac用agents做简单算术题
人工智能·macos·prompt