代码之家  ›  专栏  ›  技术社区  ›  YoussHark

angular 6/nginx/docker/kubernetes:为不同的环境配置环境变量

  •  2
  • YoussHark  · 技术社区  · 6 年前

    我有一个Angular6应用程序,需要作为Docker容器(nginx base image)部署到Kubernetes集群上。同一个镜像只构建一次,用于dev test prod环境。由于docker镜像只创建一次,并在其他环境中重用,因此我们不再拥有environment.ts文件。我有env变量,必须放在index.html中,这样每个环境都可以有自己的设置。 但它不好,因为我们可以看到一些细节,钥匙等。 有没有其他方法或其他架构可以避免将env变量放在index.html中? 致意

    2 回复  |  直到 6 年前
        1
  •  0
  •   Yaser    6 年前

    在服务器上有一个在应用程序初始化期间被调用的端点通常是很好的,这样你就不会在客户端硬编码任何最终用户可以看到的东西。

    然而,仅仅拥有它是不够的,因为如果存储在缓存或本地存储中,您需要以某种方式保护它们。

        2
  •  0
  •   yomateo    6 年前

    最后,如果您要向角度应用程序公开任何“环境变量”的值,那么最终用户可以访问它。

    要将环境变量的值“传输”到前端,我将修改Docker映像并运行一个脚本作为 ENTRYPOINT 这样做如下:

    1. echo "var my_env_var = '$MY_ENV_VAR';" >> /usr/share/nginx/html/variables.js (对每个变量重复)
    2. 装载 variables.js 角度应用程序中的脚本。
    3. 通过在前台启动nginx nginx -g 'daemon off;'