Jan*_*Jan 6 gitlab-ci kubernetes dockerfile next.js
我有一个 NextJS“^11.1.2”应用程序,它在 Dockerfile 中构建并通过 CI/CD 部署到生产环境。但我的process.env变量没有渲染
我的客户端代码中有这个,应该在运行时呈现:
const PublicApiUrl = process.env.NEXT_PUBLIC_API_URL;
在我的(Gitlab)CI/CD Pipeline中,我还通过 AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS 添加了一些--build-args, 以及:ENVARG
AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS --build-arg=NEXT_PUBLIC_API_URL=https://my.api.com --build-arg=NEXT_PUBLIC_API_URL=https://my.api.com --build-arg=NEXT_PUBLIC_BUILDER_KEY=XXXXXX
NEXT_PUBLIC_API_URL=https://my.api.com
API_URL=https://my.api.com
Run Code Online (Sandbox Code Playgroud)
Dockerfile
ARG API_URL
ENV API_URL=$API_URL
ARG NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ARG NEXT_PUBLIC_BUILDER_KEY
ENV NEXT_PUBLIC_BUILDER_KEY=$NEXT_PUBLIC_BUILDER_KEY
RUN npm run build # which resolves in "build": "next build"
Run Code Online (Sandbox Code Playgroud)
下面的值肯定是被拾取的(我做了一个RUN env,可以看到变量在那里)。
这是我configMap在 Kubernetes 中将文件安装.env.local到容器中的情况:
ARG API_URL
ENV API_URL=$API_URL
ARG NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ARG NEXT_PUBLIC_BUILDER_KEY
ENV NEXT_PUBLIC_BUILDER_KEY=$NEXT_PUBLIC_BUILDER_KEY
RUN npm run build # which resolves in "build": "next build"
Run Code Online (Sandbox Code Playgroud)
这是我的部署,它将安装configMap到容器中.env.local:
apiVersion: v1
kind: ConfigMap
metadata:
name: frontend-env-local
annotations:
"helm.sh/resource-policy": keep
data:
.env: |-
NEXT_PUBLIC_API_URL=https://my.api.url
API_URL=https://my.api.url
Run Code Online (Sandbox Code Playgroud)
当我在本地构建它时next build,它可以工作并且我的变量被渲染。
但是当我推送、构建和部署它并运行应用程序时,它是一个空字符串:
const PublicApiUrl = "";
Run Code Online (Sandbox Code Playgroud)
为什么 NextJS 无法识别该变量?
我登录到生产(Kubernetes pod)终端并运行env。变量也存在。
Jan*_*Jan 10
我也必须像这样定义变量next.config.js:
module.exports = {
serverRuntimeConfig: {
API_URL: process.env.API_URL,
},
// Will be available on both server and client
publicRuntimeConfig: {
NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL,
}
}
Run Code Online (Sandbox Code Playgroud)
进行此更改后,似乎既不configMap需要 也不需要安装的卷...只有--build-arg我的 CI/CD 中的和ARG以及ENVDockerfile
| 归档时间: |
|
| 查看次数: |
22135 次 |
| 最近记录: |