Docker撰写:更改envvariables

我已经写了一个docker-compose.yml文件来创build一个带有nodejs和mongodb(所以2个容器)的多容器应用程序,并且我希望做一些可configuration的选项,作为服务器地址和端口的select。 为此,我在docker-compose.yml中编写了如下代码,将它们设置为envvariables:

 .. web: environment: - PORT=3000 - ADDRESS=xxx.xxx.xxx.xxx .. 

在我的应用程序的源代码中,我使用了process.env.PORTprocess.env.ADDRESS来引用这些variables。

但是,如果我想改变这些值,我该怎么办,例如设置PORT=3001 ? 我必须使用docker-compose builddocker-compose up再次构build所有的应用程序,包括mongodb容器?

我必须使用docker-compose构build和docker-compose再次构build所有的应用程序,包括mongodb容器?

没有build ,刚up 。 它们是运行时选项,不是构build选项。 在docker-compose.yml文件中更改它们,然后再执行docker-compose.yml docker-compose up应该用新的环境variables重新创build容器。

或者,您可以在docker-compose.yml文件外指定环境variables,以便更改:

  1. 其中一种方法是在执行.env docker-compose窗体的相同文件夹中使用.env文件(有关它的信息,请参阅https://docs.docker.com/compose/env-file/ )。
  2. 另一种select是从你的shell插入环境variables。 您可以在运行export APP_PORT=3000 docker-compose之前指定它们,例如- PORT=${APP_PORT} ,然后在shell上export APP_PORT=3000 。 有关更多信息,请参见https://docs.docker.com/compose/environment-variables/

您可以使用env_file设置,并在同一行中定义您的环境文件。

以下是我的docker-compose.yml的样子:

 services: web: env_file: variables.env 

请注意,docker-compose期望env文件中的每行都是VAR=VAL格式。 避免在.env文件中使用export