【问题标题】:Managing Configurations After Building Ember Application构建 Ember 应用程序后管理配置
【发布时间】:2016-07-06 07:35:45
【问题描述】:

如果可能的话,在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]

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

【问题讨论】:

标签: ember.js


【解决方案1】:

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

【讨论】:

  • 目前看来是最好和最通用的选择。谢谢。
猜你喜欢
  • 2018-10-26
  • 2011-09-07
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
相关资源
最近更新 更多