Docker Compose:更改环境变量
我已经编写了一个Docker Compose:更改环境变量,docker,docker-compose,Docker,Docker Compose,我已经编写了一个docker compose.yml文件来创建一个带有nodejs和mongodb(so2个容器)的多容器应用程序,我想让一些选项可以配置,例如选择服务器地址和端口。 为此,我在docker-compose.yml中编写了以下内容,将它们设置为环境变量: .. web: environment: - PORT=3000 - ADDRESS=xxx.xxx.xxx.xxx .. 在应用程序的源代码中,我使用process.env
docker compose.yml
文件来创建一个带有nodejs和mongodb(so2个容器)的多容器应用程序,我想让一些选项可以配置,例如选择服务器地址和端口。
为此,我在docker-compose.yml中编写了以下内容,将它们设置为环境变量:
..
web:
environment:
- PORT=3000
- ADDRESS=xxx.xxx.xxx.xxx
..
在应用程序的源代码中,我使用process.env.PORT
和process.env.ADDRESS
引用这些变量
但是,如果我想更改这些值,例如设置PORT=3001
,我该怎么做呢?
我必须再次使用docker compose build
和docker compose up
构建所有应用程序,包括mongodb容器
我必须再次使用docker compose构建和docker compose构建所有应用程序,包括mongodb容器
不是build
,而是up
。它们是运行时选项,而不是构建选项。在docker compose.yml
文件中更改它们,然后再次执行docker compose up
应该使用新的环境变量重新创建容器
或者,您可以在docker compose.yml
文件之外指定环境变量,以便于进行更改:
docker compose
表单的同一文件夹中使用.env
文件(有关信息,请参阅)docker compose
之前,您可以在shell上指定它们,例如-PORT=${APP\u PORT}
,然后导出APP\u PORT=3000
。有关更多信息,请参阅环境变量是运行时指令,只需在
docker compose.yml
中更改它们,然后重新运行docker compose up
。正如johnharris85所述,重新运行docker compose up就足够了。除了使用docker-compose.yml中的环境变量外,您还可以使用一个环境文件:为什么docker compose restart不会重新加载.env变量更改?因为环境是在容器创建时设置的。您将需要使用类似于docker compose up--force recreate
的方法重新创建容器。