chore(Dockerfile): 改為純安裝 Codex CLI
This commit is contained in:
+1
-16
@@ -1,8 +1,6 @@
|
|||||||
# syntax=docker/dockerfile:1.4
|
|
||||||
FROM ubuntu:latest
|
FROM ubuntu:latest
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
ARG EXPECTED_CODEX_EMAIL=temp@gmail.com
|
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
@@ -15,17 +13,4 @@ RUN apt-get update \
|
|||||||
|
|
||||||
WORKDIR /workspace
|
WORKDIR /workspace
|
||||||
|
|
||||||
COPY app/codex_account.js /usr/local/bin/codex-account
|
CMD ["codex", "--version"]
|
||||||
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"]
|
|
||||||
|
|||||||
@@ -68,22 +68,17 @@ node app/codex_account.js
|
|||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
|
|
||||||
此專案提供以 `ubuntu:latest` 為基底的 Dockerfile,會安裝 Node.js/npm 與 `@openai/codex`:
|
此專案提供以 `ubuntu:latest` 為基底的 Dockerfile,僅安裝 Node.js/npm 與 `@openai/codex`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
DOCKER_BUILDKIT=1 docker build \
|
docker build -t codex-cli .
|
||||||
--secret id=codex_auth,src=/home/coder/jiantw83/Docker/gitea/codex/housefun.dev.01@gmail.com \
|
docker run --rm codex-cli
|
||||||
--build-arg EXPECTED_CODEX_EMAIL='temp@gmail.com' \
|
|
||||||
-t codex-account .
|
|
||||||
docker run --rm -v "$HOME/.codex:/root/.codex:ro" codex-account
|
|
||||||
```
|
```
|
||||||
|
|
||||||
建置階段會透過 BuildKit secret 暫時掛載 OAuth token,執行 `verify-codex-email` 檢查 `codex-account` 取得的 email 是否等於 `EXPECTED_CODEX_EMAIL`。預設值為 `temp@gmail.com`;不相符時 `docker build` 會失敗,且 token 不會保留在 image layer。
|
若要在容器內執行 Codex 並使用本機登入憑證,可掛載 `$HOME/.codex`:
|
||||||
|
|
||||||
容器啟動後預設執行 `codex-account`:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v "$HOME/.codex:/root/.codex:ro" \
|
-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