13

我的docker-compose.yml一个项目中有一个文件,我在其中链接多个容器以构建一个应用程序。主入口点(即带有 Web 服务器的容器)在主机端口上运行8080

现在这个端口被硬编码到docker-compose.yml文件中。

有没有办法使用运行时参数动态设置这个端口?我在文档中找不到任何关于此的内容,但另一方面,我无法想象这是不可能的。

是吗?

4

2 回答 2

2

这个问题非常古老,但已经被查看了很多次,所以我将发布到使用环境变量的文档的链接:

https://docs.docker.com/compose/environment-variables/

于 2018-12-16T04:10:46.593 回答
0

如果您想从 composeports指令动态公开端口,您可以在所述指令中使用环境变量,确保您确实为 docker 引擎加载了这些变量,例如:

# docker-compose.yml
version: '3'

services:
  abcservice:
    ports:
      - "${ENV_API_PORT}:3000"
# .env
ENV_API_PORT=8082

要为 docker 引擎加载这些变量,请通过--env-file选项传递 .env 文件引用,而不是将它们加载到 shell 中:

docker-compose --env-file .env up

因此,请确保在调用docker-compose命令时始终传递该选项。

于 2021-01-05T03:43:56.790 回答