Docker + Ollama + OpenCode
如果你不想让来自国外的黑箱编码代理在你的电脑上运行,这个解决方案可能会帮助你。我已经在我的电脑上安装了一个 Ollama 实例。
如果你不想让来自国外的黑箱编码代理在你的电脑上运行,这个解决方案可能会帮助你。我已经在我的电脑上安装了一个 Ollama 实例。
1、在 Docker 容器中安装 OpenCode
首先是 Dockerfile:
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates git openssh-client sudo bash jq iputils-ping \
&& rm -rf /var/lib/apt/lists/*
# non-root user
RUN useradd -m -s /bin/bash op \
&& echo "op ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/op \
&& chmod 0440 /etc/sudoers.d/op
USER op
WORKDIR /home/op
ENV HOME=/home/op
# install OpenCode (official installer)
RUN curl -fsSL https://opencode.ai/install | bash
# ensure opencode bin on PATH for non-login shells
ENV PATH=/home/op/.opencode/bin:$PATH
Dockerfile 在容器中安装 OpenCode,你也可以在你的主机(电脑)上安装:
curl https://ollama.ai/install.sh | sh
你的电脑上已经在运行 Ollama,如果没有,看我的另一篇文章了解如何安装,它非常简单。 为了你的 Ollama 编码体验,你可以拉取:
ollama pull deepseek-coder:6.7b
如果你想让 Ollama 在 Docker 容器中运行,你也可以这样做。对于我的情况,我只需要在 docker-compose.yml 中有一个带有 OpenCode 的容器:
services:
opencode:
build: .
container_name: opencode-client
network_mode: "host"
user: "1000:1000"
environment:
- HOME=/home/op
- PATH=/home/op/.opencode/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ./opencode/config/config.json:/home/op/.config/opencode/config.json:ro
- ~/.gitconfig:/home/op/.gitconfig:ro
- ./workspace:/home/op/workspace
working_dir: /home/op/workspace
tty: true
接下来,你需要为 OpenCode 配置 config.json 以使用本地的 Ollama:
{
"$schema": "opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": {
"baseURL": "http://127.0.0.1:11434/v1"
},
"models": {
"deepseek-coder:6.7b": {
"name": "deepseek-coder:6.7b",
"tools": true
}
}
}
}
}
我的目录结构:
OpenCode-Asstiant
opencode/config/config.json
Dockerfile
docker-compose.ymldocker compose build
接下来构建并运行:
docker compose build
docker compose up -d
容器现在正在运行。进入 Docker 容器:
docker exec -u 0 -it <YOUR CONTAINER ID> /bin/bash
# write opencode into the cli
opencode
在进入之前,用 ctrl+p 选择模型

我在我的笔记本上问一个简单的 Python "Hello World" 问题,大约需要 1-2 分钟。如果我有更好的硬件,它会更快,但我至少知道它能工作。
安装后,我觉得最好直接在主机上安装 OpenCode,复制/粘贴在容器中不太好用。
2、不使用 Docker 的 OpenCode 和本地 Ollama
要在本地安装,请使用:
curl -fsSL https://opencode.ai/install | bash

快速安装后,在你的 CLI 中打开一个新终端,你可以去到你想要的软件项目并启动 opencode。
3、使用本地 Ollama 的重要说明
将 config.json 复制到:
~/.config/opencode/config.json


4、桌面应用
OpenCode 提供了一个桌面应用的下载。在这里,你也可以使用 config.json 作为本地 Ollama 配置。
~/.config/ai.opencode.desktop

我用其他模型测试了它,它工作良好。

我让它列出我所有项目文件,它快速且正确。然后我问我的 server.py 实际上做了什么,那也是正确的。与本地 Ollama 使用 mistral 8b 相比,它很快,但我不确定 Big Pickle 是哪个模型,也不确定它有多大。
故障排除:
- 确保模型支持工具调用;并非所有模型都支持。
- Ollama 默认使用 4k 上下文;代理工具通常需要 16k–32k。
5、修复:增加上下文窗口
阻止 OpenCode 与本地 Ollama 模型一起工作的主要问题是默认的 4096 令牌上下文窗口,对于代理任务(如工具使用,例如文件创建、代码编辑)来说太小了。你必须手动增加它。
ollama run qwen3:8b
>>> /set parameter num_ctx 16384
>>> /save qwen3:8b-16k
>>> /bye
这会创建一个新的模型变体(qwen3:8b-16k),具有更大的上下文。
通过模型文件修复(生产环境推荐):创建一个文件 qwen3-16k-8b.Modelfile:
FROM qwen3:8b
PARAMETER num_ctx 16384
然后运行:
ollama create qwen3:8b-16k -f qwen3-16k-8b.Modelfile
更新你的配置:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3:8b-16k": {
"name": "Qwen3 8B (16k context)"
}
}
}
}
}
我没有测试这个配置。如果你测试了,请留言分享你的经验和使用本地 Ollama 和 OpenCode 的缓解措施!
原文链接:OpenCode with Ollama locally — docker container included
汇智网翻译整理,转载请标明出处