Mik*_*e B 6 environment-variables reactjs next.js google-cloud-run
我最近构建了一个 Nextjs 应用程序,并将其托管在 Google Cloud Run 上。
我的应用程序通过该方法向外部 API 发出一些请求getStaticProps()。
我希望能够根据环境(例如 prod 或 dev)使用针对每个环境设置不同的环境变量来指向不同的 API 主机。
我知道我可以将这些变量存储在特定于环境的文件中,例如,.env.development但是.env.production我希望能够将这些环境变量存储在云运行服务的 Google Cloud 控制台的环境变量字段中,并跳过将它们完全存储在文件中。
我尝试将变量添加到 Cloud Run,但不起作用。我还尝试在变量前加上 NEXT_PUBLIC_... 没有运气。
有人对如何实现这一目标有任何建议吗?
好吧...我想我现在已经明白了。我使用 Cloud Builds 来构建我的容器,并且容器npm run build在运行之前运行npm run start。
我假设我的 Cloud Run 变量在 Cloud Build 构建项目时不可用。
因此,我认为我的解决方案可能会尝试使用替换变量在构建时注入变量。
编辑:已确认。如果我在开发模式下启动 Nextjs,以便为每个请求在服务器上呈现页面,则使用 Cloud Run 环境变量。为了构建用于生产的 Nextjs 应用程序,我将环境变量包含在由 Cloud Build 构建的 Dockerfile 中
编辑:根据请求,设置环境变量的 dockerfile 示例:
FROM node:16.13-alpine
RUN mkdir -p /usr/src
WORKDIR /usr/src
COPY . /usr/src
ENV NEXT_PUBLIC_MY_API_HOST='https://some.host.com'
RUN npm install -only=production
RUN npm run build
EXPOSE 3000
CMD npm run start
Run Code Online (Sandbox Code Playgroud)
然后您可以使用以下命令从代码中引用环境变量process.env.NEXT_PUBLIC_MY_API_HOST
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |