You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS无法识别从Secret Manager加载的Docker构建环境变量

问题:NextJS + GCP Cloud Build构建Docker镜像时环境变量无法生效

在使用NextJS应用通过GCP Cloud Build构建Docker镜像时遇到环境变量问题:通过GCP Secret Manager在构建阶段加载的API密钥,日志已确认变量值正常填充,但NextJS运行时却找不到这些变量,导致报错。

已知NextJS可在构建阶段(next.config.ts)或运行阶段(.env文件)配置环境变量,但无法定位变量失效的具体原因。另外,部分API密钥属于机密信息,不想通过NEXT_PUBLIC_前缀暴露到客户端(除非对该方式的安全性理解有误)。


cloudbuild.yml配置

steps:
  - name: 'gcr.io/cloud-builders/docker'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        echo "GHOST_CONTENT_API environment variable: $$GHOST_CONTENT_API"
        echo "GA4_MEASUREMENT_ID environment variable: $$GA4_MEASUREMENT_ID"
        docker build -t us-central1-docker.pkg.dev/${PROJECT_ID}/repo/repo-website .
    secretEnv: ['GHOST_CONTENT_API', 'GA4_MEASUREMENT_ID']
availableSecrets:
  secretManager:
    - versionName: projects/${PROJECT_ID}/secrets/GHOST_CONTENT_API/versions/1
      env: 'GHOST_CONTENT_API'
    - versionName: projects/${PROJECT_ID}/secrets/GA4_MEASUREMENT_ID/versions/1
      env: 'GA4_MEASUREMENT_ID'

构建日志(变量已正确输出)

BUILD
Already have image (with digest): gcr.io/cloud-builders/docker
GHOST_CONTENT_API environment variable: #####
GA4_MEASUREMENT_ID environment variable: GTM-####

Dockerfile配置

FROM node:18-alpine
WORKDIR /app
COPY . .
RUN npm install --omit=dev --production
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]

NextJS测试代码(layout.tsx)

在layout.tsx中测试客户端和服务端环境变量加载情况,结果均为undefined:

console.log('ENV Variables - Layout.tsx')
console.log('Client ENV') // undefined
console.log(process.env.NEXT_PUBLIC_GHOST_CONTENT_API)
console.log('Server ENV') // undefined
console.log(process.env.GHOST_CONTENT_API)

内容的提问来源于stack exchange,提问作者cphill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:33:12