在前端中部署具有不同环境变量的Web服务

时间:2018-06-24 08:19:29

标签: docker webpack continuous-integration environment-variables continuous-deployment

我有一个由后端和前端组成的Web服务,在前端,我使用一个API uri,它可以根据部署服务的环境而变化。

使用webpack's EnvironmentPlugin,我可以简单地使用其他环境变量来构建源代码。该插件允许我在JavaScript中使用process.env,这在开发阶段很方便,但是在绑定前端的代码process.env之后,绑定后与给定的环境变量将保持不变。

问题是,我在CI管道上为Web服务构建了一个docker映像,但是直到稍后对其进行部署之前,我不知道API uri。

如何根据环境变量有效地更改API uri?

1 个答案:

答案 0 :(得分:0)

传递环境变量有两种选择,一种是通过文件传递

docker run --env-file ./env.list ubuntu bash

另一个是通过命令行,在docker run命令中使用-e选项。您可以堆叠-e选项以传递多个环境变量。

您在dockerfile中拥有的一件事就是可以声明条目。这样,您可以执行以下操作:

  1. 通过docker run cmdline设置环境数据(通过上面的信息)
  2. 在脚本中获取环境信息
  3. 最后,在脚本中使用它使用sed之类的东西修改包含uri数据的任何文件