Nuxt3:如何在 docker build 之后通过 process.env 设置运行时环境变量

编程入门 行业动态 更新时间:2024-10-05 21:14:00

Nuxt3:如何在 docker build 之后通过 process.env 设置运行时<a href=https://www.elefans.com/category/jswz/34/1771433.html style=环境变量"/>

Nuxt3:如何在 docker build 之后通过 process.env 设置运行时环境变量

如果我使用 docker-compose 和环境变量在本地构建和运行它,我的 nuxt3 应用程序运行良好。

但是当我将构建的 docker 镜像推送到我的远程生产环境时,我无法在 runtimeConfig 中应用生产环境变量。可能是因为 process.env["SECRET_KEY"] 在构建阶段被替换为“真正的密钥”。

如果我将环境变量命名为 NUXT_PUBLIC_XXXX / NUXT_XXXX,即使在构建映像后我也可以更新 runtimeConfig。

但是当我使用 PaaS 服务进行生产部署时,我无法控制变量命名。因此,我无法为我的远程环境动态提供正确的运行时配置 -> 我总是以在本地机器上的构建阶段设置的本地值结束。(请参见下面示例中的 clientID)

有没有一种方法可以通过 process.env["custom env name"] 设置运行时配置,即使在构建图像之后? 或者您有任何其他想法如何动态提供运行时配置? (我想避免为每个环境构建单独的容器

非常感谢您的投入。非常感谢任何帮助!

#nuxt.config.ts
...
runtimeConfig: {

#in production ENVs are accessible under the key "VCAP_SERVICES", if key is not present the local development env is applied
clientId: process.env["VCAP_SERVICES"] ? process.env["VCAP_SERVICES"]["clientId"] : process.env["UAA_CLIENT_ID"],
secretKey: process.env["NUXT_SECRET_KEY"]

  public: {
    backendApi: 'http://127.0.0.1:5000',  // will be overridden by NUXT_PUBLIC_BACKEND_API environment variable
    environment: "production", // will be overridden by NUXT_PUBLIC_ENVIRONMENT environment variable
        }
    },
回答如下:

可以在运行时提供环境变量(在构建 docker 镜像之后),但前提是遵守以下要求(参见 Nuxt Docs)

运行时配置值在运行时自动替换为匹配的环境变量。有两个关键要求。

  1. 你想要的变量必须在你的 nuxt.config 中定义。这可确保任意环境变量不会暴露给您的应用程序代码。
  2. 只有特别命名的环境变量才能覆盖运行时配置属性。也就是说,一个以 NUXT_ 开头的大写环境变量,它使用 _ 来分隔键和大小写变化..

更多推荐

Nuxt3:如何在 docker build 之后通过 process.env 设置运行时环境变量

本文发布于:2024-05-30 15:40:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770652.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:环境变量   如何在   docker   env   process

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!