S174-FIX-02: Nuxt Local Build + Go pkg.dev
S174-FIX-02: Nuxt Local Build + Gỡ pkg.dev
Date: 2026-04-08 Mission: S174-FIX-02 Status: COMPLETE — 5/5 verify GREEN
VIỆC 1 — Dọn Dead Code + .dockerignore
| Action | File | Detail |
|---|---|---|
| Xóa dep | web/package.json |
Removed "google-auth-library": "^10.5.0" |
| Xóa file | web/server/utils/googleAuth.ts |
152 lines deleted (all commented-out code + stubs) |
| Tạo mới | web/.dockerignore |
.git, node_modules, .nuxt, .output, *.log, .env*, dist |
| Regen lockfile | web/pnpm-lock.yaml |
162 deletions, 7 additions — google-auth-library removed |
Grep imports: agentDataAuth.ts had commented-out imports from googleAuth — no live references. Safe delete.
Commits:
2991134S174-FIX-02: dead code + dockerignore89459f1S174-FIX-02: regenerate lockfile without google-auth-library
Pushed to GitHub branch: s174-fix-02-nuxt-local
VIỆC 2 — Build Local
docker build -t nuxt-ssr-local:s174 -f web/Dockerfile web/
| Metric | Value |
|---|---|
| Build time | ~284s |
| Image ID | sha256:072ccd861f30... |
| Image size | 60.5MB |
| Entrypoint | docker-entrypoint.sh |
| Cmd | node .output/server/index.mjs |
| Base image | node:20-alpine (Docker Hub) |
| Nitro output | 35.9 MB (10.1 MB gzip) |
So sánh với image cũ nuxt-ssr-local:latest:
- Size: 60.5MB vs 60.4MB (gần như bằng)
- Entrypoint/Cmd: identical
VIỆC 3 — Test Song Song
Container test: incomex-nuxt-test trên port 3099 (3001 bị chiếm), network docker_incomex, volume :ro
| Check | Result |
|---|---|
docker ps |
UP, image nuxt-ssr-local:s174 |
docker logs |
Listening on http://0.0.0.0:3000 — no fatal |
curl -sI localhost:3099 |
HTTP/1.1 200 OK, x-powered-by: Nuxt |
curl body |
HTML rendered, Nuxt UI CSS present |
Container test removed after checkpoint approval.
VIỆC 4 — Swap Production + Verify
Thay đổi
- Backup:
docker-compose.yml.bak.s174(4961 bytes) docker-compose.ymldòng 125:asia-southeast1-docker.pkg.dev/github-chatgpt-ggcloud/web-test/nuxt-ssr:latest→nuxt-ssr-local:s174- Swap:
docker compose up -d nuxt→ Container recreated, started
Verify 5/5
| # | Check | Value |
|---|---|---|
| 1 | docker ps | grep incomex-nuxt |
Up (healthy), image nuxt-ssr-local:s174 |
| 2 | curl -sI https://vps.incomexsaigoncorp.vn/ |
HTTP/1.1 200 OK, x-powered-by: Nuxt, via nginx/1.29.5 |
| 3 | curl https://vps.incomexsaigoncorp.vn/api/health |
{"status":"healthy"}, 3 services ok (qdrant 16.6ms, pg 1.6ms, openai ok), 916 docs, ratio 1.65 |
| 4 | docker logs incomex-nuxt --tail 50 |
Listening on http://0.0.0.0:3000 — Directus 403 + mdi:undefined are pre-existing, no new errors |
| 5 | docker inspect --format '{{.Config.Image}}' |
nuxt-ssr-local:s174 |
Gỡ pkg.dev
/root/.docker/config.json: removedasia-southeast1-docker.pkg.devauth entry (contained GCP service account key)- Backup:
/root/.docker/config.json.bak.s174 - Current config:
{"auths":{}}
Rollback Artifacts
| File | Purpose |
|---|---|
/opt/incomex/docker/docker-compose.yml.bak.s174 |
Compose rollback (contains original pkg.dev image ref) |
/root/.docker/config.json.bak.s174 |
Docker auth rollback (contains GCP credentials) |
Image asia-southeast1-docker.pkg.dev/.../nuxt-ssr:latest |
Still cached locally (72715a92885c, 246MB) |
Rollback command: cp docker-compose.yml.bak.s174 docker-compose.yml && docker compose up -d nuxt
AR-01 Status: CLOSED
Before: docker-compose.yml dòng 125 trỏ asia-southeast1-docker.pkg.dev (retired Artifact Registry). Mỗi lần recreate/cold-start phụ thuộc registry hết hạn.
After: Image nuxt-ssr-local:s174 built from source trên VPS. Zero GCP dependency cho Nuxt runtime. Docker config cleaned.