ember.js – 构建Ember应用程序后管理配置

如果可能的话,寻找在ember构建之后管理配置的最佳实践.虽然它不一定特定于Docker,但即使您不是Docker资深人士,下面的内容也必须让您对该要求有所了解.

动机:我们使用Docker Docker Hub分别(自动)构建和部署我们的后端和前端应用程序.有多个部署.前端应用程序基于Ember(使用ember-cli).而不是在一个单独的Dockerfile中运行ember build –environment deployment- {1..N}并最终拥有多个Docker镜像,我宁愿使用一个Docker镜像并运行Docker容器,并将所需的设置作为环境变量传递给注入它们稍后进入Ember配置,例如:

docker run -e ENV_APP_APIURL=deployment1.example.com ... --name deployment1 dockerimage

然后我将在Dockerfile中运行一个小脚本作为ENTRYPOINT,它使用这些环境变量并将它们注入到构建的Ember应用程序中,以便Web服务器可以为重新配置的应用程序提供服务.简而言之:

[ember app] >> build >> [compiled generic web app] >> reconfigure(?) >> [final web app]

这是做事的方式还是我应该去喝咖啡?

最佳答案 如何使用入口点脚本中的环境变量将meta标签注入index.html?然后Ember应用程序可以在运行时拾取这些元标记?

ENTRYPOINT /start.sh

我的启动脚本执行此操作:

#!/bin/bash
set -e

if [ -n $API_BASE_URI ]
then
   sed -i "/API_BASE_URI/c <meta name='API_BASE_URI' content='$API_BASE_URI'>" /app/dist/index.html; > /dev/null
 fi ]

exec "$@"

index.html的:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>APP NAME</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="API_BASE_URI" content="/api">
...
点赞