feat(codex_account): 改用 shell 取得登入帳號 #5
+1
-16
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user