Ember.js 在构建Ember应用程序后管理配置
如果可能的话,在Ember.js 在构建Ember应用程序后管理配置,ember.js,Ember.js,如果可能的话,在ember构建之后寻找管理配置的最佳实践。虽然这不一定是特定于Docker的,但以下内容必须让您对需求有一个很好的了解,即使您不是Docker的老手 动机:我们使用+Docker Hub(自动)分别构建和部署后端和前端应用程序。有多个部署。前端应用程序基于(使用ember cli)。与其在单独的Dockerfile中运行ember build--environment deployment-{1..N},并最终拥有多个Docker映像,我更希望拥有一个Docker映像,并运行Do
ember构建之后寻找管理配置的最佳实践。虽然这不一定是特定于Docker的,但以下内容必须让您对需求有一个很好的了解,即使您不是Docker的老手
动机:我们使用+Docker Hub(自动)分别构建和部署后端和前端应用程序。有多个部署。前端应用程序基于(使用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的工作方式还是我应该去喝杯咖啡?如何将元标记从entrypoint脚本中注入到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 "$@"
#/bin/bash
set-e
如果[-n$API\u BASE\u URI]
然后
sed-i“/API\u BASE\u URI/c”/app/dist/index.html;>/dev/null
fi]
执行官“$@”
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">
...
应用程序名称
...
似乎有一种方法可以将Docker环境变量注入到构建过程中。这不是我想要的。然而,相当可观:看起来是迄今为止最好、最通用的选择。谢谢