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.PORT
和process.env.ADDRESS
来引用这些variables。
但是,如果我想改变这些值,我该怎么办,例如设置PORT=3001
? 我必须使用docker-compose build
和docker-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,以便更改:
- 其中一种方法是在执行
.env
docker-compose
窗体的相同文件夹中使用.env
文件(有关它的信息,请参阅https://docs.docker.com/compose/env-file/ )。 - 另一种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
。