「系統安全不是在出事後才補強,而是從最底層的基礎設施就開始設計!」
在 Day 01 中,我們揭曉了 Angelina AI Agent 的全貌。今天我們不急著寫 Python 程式碼,而是要先把 Agent 的「家」——基礎設施與容器環境建置好!
今天我們將探討:
在設計 AI Agent 的維運架構時,安全性與穩定度是我的首要考量:
Red Hat Enterprise Linux (RHEL)
Rootless Podman vs. Traditional Docker
接下來,我們在 RHEL 上進行 Rootless Podman 的環境配置。
Step 1:安裝 Podman 與相關工具
在 RHEL 上,Podman 通常已預裝。若未安裝,可使用 dnf 進行安裝:
# 更新套件庫並安裝 podman
sudo dnf update -y
sudo dnf install -y podman
Step 2:啟用 User Linger(讓容器在登出後持續運行)
預設情況下,當普通使用者登出 Linux 系統時,該使用者的進程會被終止。為了讓 AI Agent 24 小時不間斷運作,必須啟用 linger:
# 允許當前使用者在登出後繼續運行 background processes
loginctl enable-linger $USER
# 確認 linger 狀態 (應顯示:Linger=yes)
loginctl show-user $USER | grep Linger
為了確保 Angelina 後端環境乾淨且安全,我們撰寫 Containerfile,並遵循最小權限原則。
1. 專案的 Containerfile 內容
# 使用 Python 3.12 基礎鏡像
FROM python:3.12-slim
WORKDIR /app
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
&& rm -rf /var/lib/apt/lists/*
# 複製依賴文件並安裝
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 複製應用程式碼
COPY . .
# 開放 FastAPI 預設埠位
EXPOSE 8000
# 啟動 FastAPI / Uvicorn 服務
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
2. 構建與運行容器(完全對齊專案 Quick Start)
在專案根目錄下,準備好 .env 設定檔後即可進行容器構建與啟動:
# 1. 構建 Podman 鏡像
podman build -t angelina-finance-agent .
# 2. 以 Rootless 模式運行容器,並傳入環境變數與資料掛載
# (註::Z 標籤用於 RHEL SELinux 安全權限修飾)
podman run -d \
--name angelina \
--env-file .env \
-p 8000:8000 \
-v ./data:/app/data:Z \
-v ./backups:/app/backups:Z \
angelina-finance-agent
# 3. 確認容器運作狀態與日誌
podman ps -a --filter name=angelina
podman logs -f angelina
今天我們建立了 Angelina AI Agent 的基礎運行環境:
有了這個堅固的安全隔離箱,明天我們將使用 Ansible Playbook 來實現基礎設施的自動化配置與部署(deploy.yml, status.yml),讓整套系統具備真正的 Code 化管理能力!
明日預告:【Day 03】自動化維運實戰:使用 Ansible Playbook 一鍵部署與管理多 VM 基礎設施