Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

使用 Docker 實際運行 OpenCode AI

Posted on 2026-01-142026-01-14 by Rico

一個可重現、可控、可維運的 AI Coding 環境實作指南

AI Coding 工具(如 OpenCode AI)若直接安裝在開發者本機,雖然方便,但在團隊或企業環境中,往往會帶來:

  • 環境不一致
  • 憑證散落各處
  • 無法治理與稽核
  • 難以標準化導入

本文將示範 如何依照實務最佳做法,使用 Docker 建立一個可實際運行的 OpenCode AI 容器環境,讓 AI Coding 工具成為一個 可管理的工程元件。


一、整體設計目標

本實作的設計目標如下:

  • OpenCode AI 不直接安裝在主機
  • 使用 Docker 容器執行
  • 不將任何 API Token / 憑證寫入 Image
  • 使用非 root 使用者
  • 可重建、可版本控管
  • 適合未來擴充為團隊或企業標準

二、專案目錄結構

建議建立一個乾淨的目錄:

opencode-docker/
├── Dockerfile
├── build.sh
└── run.sh

三、Dockerfile(核心實作)

以下是一份 可直接使用的 Dockerfile,已包含實務上必要的修正與安全考量。

FROM ubuntu:latest

ENV DEBIAN_FRONTEND=noninteractive

# 安裝必要工具
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    ca-certificates \
    git \
    openssh-client \
    sudo \
 && rm -rf /var/lib/apt/lists/*

# 建立非 root 使用者
RUN useradd -m -s /bin/bash ubuntu \
 && echo "ubuntu ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ubuntu \
 && chmod 0440 /etc/sudoers.d/ubuntu

USER ubuntu
WORKDIR /home/ubuntu

# 建立 SSH 目錄
RUN mkdir -p /home/ubuntu/.ssh \
 && touch /home/ubuntu/.ssh/known_hosts

# 預先加入 GitHub Host Key(避免互動式詢問)
RUN ssh-keyscan -T 5 github.com 2>/dev/null >> /home/ubuntu/.ssh/known_hosts || true

# 安裝 OpenCode AI(官方 binary)
RUN curl -fsSL https://opencode.ai/install | bash

✅ 重點說明

  • 沒有任何憑證寫進 image
  • OpenCode 以非 root 使用者執行
  • 適合企業資安稽核

四、Build Image

建立 build.sh:

#!/bin/bash
set -e

docker build -t opencode-ai:latest .

執行:

chmod +x build.sh
./build.sh

五、執行容器(關鍵實作)

OpenCode AI 需要使用者的認證資料,這些資料 必須存在主機上,再掛載進容器。

1️⃣ 主機端準備(只做一次)

登入一次 OpenCode(或依你實際使用方式)後,通常會產生:

~/.local/share/opencode/auth.json
~/.config/opencode/

2️⃣ run.sh(正式使用方式)

#!/bin/bash

docker run --rm -it \
  -v "$HOME/.local/share/opencode:/home/ubuntu/.local/share/opencode" \
  -v "$HOME/.config/opencode:/home/ubuntu/.config/opencode" \
  -v "$PWD:/workspace" \
  -w /workspace \
  opencode-ai:latest \
  opencode

執行:

chmod +x run.sh
./run.sh

六、實際使用情境

進入後,你會在容器內:

  • 使用 opencode 指令
  • 操作的是 目前專案目錄
  • 使用的是 你自己的憑證
  • 容器刪除後,不留任何狀態

這讓 OpenCode AI 的行為符合:

「工具可丟棄,資料留在主機」的雲原生設計原則


七、為什麼這種做法適合企業

✔ IT 管理面

  • 可統一 image 版本
  • 可做資安掃描
  • 可快速停用或更新

✔ 資安面

  • 憑證不進 image
  • 不以 root 執行
  • 降低供應鏈風險

✔ 工程面

  • 環境一致
  • 不污染主機
  • 新人上線成本低

八、常見延伸與下一步

這個架構可以自然延伸為:

  • 團隊共用的 OpenCode image
  • 內部 AI Coding 平台
  • CI Pipeline 中的 AI Review / Refactor 工具
  • 結合企業內部 RAG / 文件知識庫

結語

AI Coding 工具的價值不只在於「寫得快」,而在於:

是否能被安全、可控、長期地導入企業環境。

透過 Docker 容器化 OpenCode AI,我們可以把一個「個人工具」
轉變為 符合企業治理的工程能力。

這,才是 AI 在企業中真正可持續的導入方式。

Recent Posts

  • Token/s and Concurrency:
  • Token/s 與並發:企業導入大型語言模型時,最容易被誤解的兩個指標
  • Running OpenCode AI using Docker
  • 使用 Docker 實際運行 OpenCode AI
  • Security Risks and Governance Models for AI Coding Tools

Recent Comments

  1. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on High Availability Architecture, Failover, GeoDNS, Monitoring, and Email Abuse Automation (SOAR)
  2. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on MariaDB + PostfixAdmin: The Core of Virtual Domain & Mailbox Management
  3. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Daily Operations, Monitoring, and Performance Tuning for an Enterprise Mail System
  4. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Final Chapter: Complete Troubleshooting Guide & Frequently Asked Questions (FAQ)
  5. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Network Architecture, DNS Configuration, TLS Design, and Postfix/Dovecot SNI Explained

Archives

  • January 2026
  • December 2025
  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • CUDA
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • Python
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2026 Nuface Blog | Powered by Superbs Personal Blog theme