feat(codex_account): 改用 shell 取得登入帳號 #5

Open
jiantw83 wants to merge 6 commits from ai-review-resolve/develop-20260629-094754 into develop
3 changed files with 6 additions and 42 deletions
Showing only changes of commit ba47c2fd9f - Show all commits
+1 -16
View File
@@ -1,8 +1,6 @@
# syntax=docker/dockerfile:1.4
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
ARG EXPECTED_CODEX_EMAIL=temp@gmail.com
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
@@ -15,17 +13,4 @@ RUN apt-get update \
WORKDIR /workspace
COPY app/codex_account.js /usr/local/bin/codex-account
COPY app/verify_codex_email.sh /usr/local/bin/verify-codex-email
RUN chmod +x /usr/local/bin/codex-account /usr/local/bin/verify-codex-email
ENV EXPECTED_CODEX_EMAIL=${EXPECTED_CODEX_EMAIL}
RUN --mount=type=secret,id=codex_auth,required=true \
install -d -m 700 /root/.codex \
&& cp /run/secrets/codex_auth /root/.codex/auth.json \
&& chmod 600 /root/.codex/auth.json \
&& EXPECTED_CODEX_EMAIL="$EXPECTED_CODEX_EMAIL" verify-codex-email \
&& rm -f /root/.codex/auth.json
CMD ["codex-account"]
CMD ["codex", "--version"]
+5 -10
View File
@@ -68,22 +68,17 @@ node app/codex_account.js
## Docker
此專案提供以 `ubuntu:latest` 為基底的 Dockerfile安裝 Node.js/npm 與 `@openai/codex`
此專案提供以 `ubuntu:latest` 為基底的 Dockerfile安裝 Node.js/npm 與 `@openai/codex`
```bash
DOCKER_BUILDKIT=1 docker build \
--secret id=codex_auth,src=/home/coder/jiantw83/Docker/gitea/codex/housefun.dev.01@gmail.com \
--build-arg EXPECTED_CODEX_EMAIL='temp@gmail.com' \
-t codex-account .
docker run --rm -v "$HOME/.codex:/root/.codex:ro" codex-account
docker build -t codex-cli .
docker run --rm codex-cli
```
建置階段會透過 BuildKit secret 暫時掛載 OAuth token,執行 `verify-codex-email` 檢查 `codex-account` 取得的 email 是否等於 `EXPECTED_CODEX_EMAIL`。預設值為 `temp@gmail.com`;不相符時 `docker build` 會失敗,且 token 不會保留在 image layer。
容器啟動後預設執行 `codex-account`
若要在容器內執行 Codex 並使用本機登入憑證,可掛載 `$HOME/.codex`
```bash
docker run --rm \
-v "$HOME/.codex:/root/.codex:ro" \
codex-account
codex-cli codex --version
```
-16
View File
@@ -1,16 +0,0 @@
#!/bin/sh
# 驗證 codex-account 取得的登入 email 是否符合 EXPECTED_CODEX_EMAIL。
set -eu
expected_email="${EXPECTED_CODEX_EMAIL:-temp@gmail.com}"
actual_email="$(codex-account)"
if [ "$actual_email" = "$expected_email" ]; then
printf 'Codex account email verified: %s\n' "$actual_email"
exit 0
fi
printf 'Codex account email mismatch: expected %s, got %s\n' \
"$expected_email" "${actual_email:-<empty>}" >&2
exit 1