构建Ember应用程序后管理配置

时间:2015-07-24 02:13:19

标签: ember.js

ember build之后寻找管理配置最佳做法(如果可能的话)。虽然它不一定特定于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]

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

1 个答案:

答案 0 :(得分:2)

如何使用入口点脚本中的环境变量将元标记注入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">
...